我正在开发一个ASP.Net Web应用程序,它通过MySQL提供的连接器/ NET(它是一个ADO.Net兼容接口)使用MySQL。我对ASP.Net的理解是并发请求将在不同的线程中处理,因此我的代码需要是线程安全的。使用ADO.Net的多线程访问MySQL
我无法在MySQL文档中找到任何解释如何以线程安全方式使用API的明确说明。 MySqlCommand上的文档说:
此类型的公共静态(在Visual Basic中为Shared)成员对于多线程操作是安全的。实例成员不保证是线程安全的
我对此的字面理解是,在线程之间共享连接对象是安全的,前提条件是我不同时调用非静态方法。换句话说,我应该能够做到:
IDbConnection myConnection = GetSomeConnection(); // Returns a shared object
IDbCommand cmd;
lock(myConnection)
{
cmd = myConnection.CreateCommand();
}
// Some code using cmd
不过,我很担心,我还没有发现的文件指出,这是安全的,只是说明它缺乏文件是不安全的。
如果这是不安全的,推荐使用线程本地连接还是应该实现某种连接池?