【发布时间】:2010-12-03 21:45:00
【问题描述】:
我正在开发一个 ASP.Net Web 应用程序,该应用程序通过 MySQL 提供的连接器/NET 使用 MySQL,这是一个与 ADO.Net 兼容的接口。我对 ASP.Net 的理解是并发请求会在不同的线程中处理,所以我的代码需要是线程安全的。
我在 MySQL 文档中找不到任何明确解释如何以线程安全方式使用 API 的内容。 MySqlCommand 上的文档说:
这种类型的公共静态(在 Visual Basic 中为共享)成员对于多线程操作是安全的。不保证实例成员是线程安全的
我对此的字面理解是,在线程之间共享连接对象是安全的,只要我不同时调用非静态方法。换句话说,我应该能够做到:
IDbConnection myConnection = GetSomeConnection(); // Returns a shared object
IDbCommand cmd;
lock(myConnection)
{
cmd = myConnection.CreateCommand();
}
// Some code using cmd
但是,我担心我还没有找到说明这是安全的文档,只是缺少说明它不安全的文档。
如果这是不安全的,推荐使用线程本地连接的方法,还是我应该实现某种连接池?
【问题讨论】:
标签: c# mysql multithreading ado.net