0
我想知道如果這個代碼是線程安全的, 這是從數據表編輯器C#API https://editor.datatables.net/manual/net/webapiWeb API 2控制器線程安全嗎? (數據表編輯器插件)
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鎖定。如果你只是在閱讀,那麼在做「線程安全」的事情上沒有任何意義。你期望數據庫會發生什麼,爲什麼?在問你的問題之前,你有過調查嗎? – Patrick
如果您擔心多個訪問之間的線程安全性,您可以隨時使用交易btw。 – Patrick
每個請求將由一個單獨的控制器實例處理,因此不會有多個線程進入相同的Staff()方法... –