在使用 native C++ 进行编码时,我经常使用 CRITICAL_SECTION 来创建线程安全代码(或者至少是我认为线程安全的代码......)。在C++/CLI中,我想也可以使用CRITICAL_SECTION?这样做明智吗?如果没有,为什么?还有什么替代方案?
最佳答案
由于某些实现(例如 IIRC、SQL Server)将这些内容实现为在不同线程上运行的纤程,因此他们对使用非托管线程 ID 提出了警告,因此我也会避免使用非托管关键部分。
我见过的.Net 代码通常使用 System::Threading::Monitor::Enter()
和 Monitor::Exit()
作为其关键部分(在 C# 中可以方便地用 lock
关键字封装)。否则,您也可以使用托管互斥体。
关于thread-safety - C++/CLI 中的 CRITICAL_SECTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934370/