2

在本机 C++ 中编码时,我经常使用 CRITICAL_SECTIONs 来创建线程安全代码(或者至少我认为是线程安全的......)。在 C++/CLI 中,我想也可以使用 CRITICAL_SECTION?这样做是否明智?如果不是,为什么?还有什么替代方案?

4

1 回答 1

2

由于某些实现(如 IIRC、SQL Server)将这些东西实现为在不同线程上运行的纤程,因此他们对使用非托管线程 ID 发出警告,我也会避免使用非托管关键部分。

我见过的 .Net 代码通常使用System::Threading::Monitor::Enter()andMonitor::Exit()作为它们的关键部分(方便地由 C# 中的关键字包装lock)。否则,您也可以使用托管互斥锁。

于 2013-06-05T08:11:43.260 回答