【问题标题】:Is Web API 2 Controller thread safe? (datatables editor plugin)Web API 2 控制器线程安全吗? (数据表编辑器插件)
【发布时间】:2015-06-30 09:42:37
【问题描述】:

我想知道这段代码是否是线程安全的, 这取自数据表编辑器 c# API https://editor.datatables.net/manual/net/webapi

public class StaffController : ApiController
{
    [Route("api/staff")]
    [HttpGet]
    [HttpPost]
    public IHttpActionResult Staff()
    {
        var request = HttpContext.Current.Request;
        var settings = Properties.Settings.Default;

        using (var db = new Database(settings.DbType, settings.DbConnection))
        {
            var response = new Editor(Db, "staff")
                .Model<StaffModel>()
                .Process(request)
                .Data();

            return Json(response);
        }
    }
}

如果很少有线程通过更新进入Staff() 方法会怎样?它将如何影响数据库?

编辑 我正在使用 SQL 数据库,数据库应该保存重要的共享数据,我担心它会在中间中断(比如当 2 个线程更新相同数据时出现死锁,这甚至可能吗?)

【问题讨论】:

  • 这取决于数据库。通常,如果您正在执行 write,则该表会被 sql server 锁定。如果你只是在做读取,那么做一些“线程安全”的事情是没有意义的。您期望数据库会发生什么,为什么?在提出问题之前,您是否对此进行过调查?
  • 如果您担心多次访问之间的线程安全,您可以随时使用事务。
  • 每个请求都将由一个单独的控制器实例处理,因此不会有多个线程进入同一个 Staff() 方法...

标签: c# datatables


【解决方案1】:

是的,这是线程安全的,框架通过排队处理多个并发请求。对于每个请求,都会创建一个新的控制器实例。顺便说一句,你只是在读取数据,所以不用担心:)

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 2015-08-10
    • 2020-07-31
    • 2021-10-31
    相关资源
    最近更新 更多