我要问和回答这个问题,因为这使我花了很长时间才弄清楚,我希望答案从这里开始。

问题:一个长时间运行的unixODBC查询会阻止同一应用程序中的所有其他查询。

问题是:如何阻止这种情况的发生。

请您参考如下方法:

答案以__handles.c中的剪切粘贴评论的形式出现-我知道,为什么每个人都没有想到从那里开始寻找文档,对吗?

/* 
 * use just one mutex for all the lists, this avoids any issues 
 * with deadlocks, the performance issue should be minimal, if it 
 * turns out to be a problem, we can readdress this 
 * 
 * We also have a mutex to protect the connection pooling code 
 * 
 * If compiled with thread support the DM allows four different 
 * thread strategies 
 * 
 * Level 0 - Only the DM internal structures are protected 
 * the driver is assumed to take care of it's self 
 * 
 * Level 1 - The driver is protected down to the statement level 
 * each statement will be protected, and the same for the connect 
 * level for connect functions, note that descriptors are considered 
 * equal to statements when it comes to thread protection. 
 * 
 * Level 2 - The driver is protected at the connection level. only 
 * one thread can be in a particular driver at one time 
 * 
 * Level 3 - The driver is protected at the env level, only one thing 
 * at a time. 
 * 
 * By default the driver open connections with a lock level of 3, 
 * this can be changed by adding the line 
 * 
 * Threading = N 
 * 
 * to the driver entry in odbcinst.ini, where N is the locking level 
 * (0-3) 
 * 
 */ 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!