C++ 在从OCCI环境获取连接时,我是否应该放置关键部分

C++ 在从OCCI环境获取连接时,我是否应该放置关键部分,c++,multithreading,concurrency,C++,Multithreading,Concurrency,我正在编写一个多线程应用程序。我的工作线程从环境对象获取连接,如下所示: //EnterCriticalSection(&cs); conn = env->createConnection(username, password, connStr); //LeaveCriticalSection(&cs); 对于并发性,是否应在关键部分中创建连接?环保署需要它吗?为什么 谢谢。如果createConnection是线程安全的,那么您就不需要它了 如果createConnec

我正在编写一个多线程应用程序。我的工作线程从环境对象获取连接,如下所示:

//EnterCriticalSection(&cs);
conn = env->createConnection(username, password, connStr);
//LeaveCriticalSection(&cs);
对于并发性,是否应在关键部分中创建连接?环保署需要它吗?为什么


谢谢。

如果
createConnection
是线程安全的,那么您就不需要它了


如果
createConnection
不是线程安全的,那么您确实需要关键部分

请查阅您的文档,查看它是否是线程安全的。如果它没有明确地说它是线程安全的,那么他们就安全行事,并将它包装在一个关键部分中


编辑:当然,以上所有内容都假设多个线程将调用
createConnection
。如果不是,那么显然你根本不需要临界区。

它说,如果环境是在线程化的静音模式下创建的,那么它是线程安全的。但是,过了一段时间,线程在创建连接时被锁定。我对这些文档的理解是,如果使用了
THREADED\u MUTEXED
,那么对
createEnvironment()
的调用是线程安全的。然而,
createConnection
是线程安全的,这一点没有被提及。如果您遇到问题,当您将
createConnection
包装到关键部分时,这些问题就会消失,那么您应该将关键部分保留在适当的位置。我将在大约3小时内使用关键部分运行应用程序,到目前为止没有发生任何问题。然而,我仍然怀疑,因为它比没有关键部分的运行速度慢得多。而且我猜这并不意味着它是线程安全的,因为它在测试时不会被锁定。我说得对吗?