在本机C ++中编码时,我经常使用CRITICAL_SECTION来创建线程安全的代码(或者至少我认为是线程安全的代码)。在C ++ / CLI中,我猜也可以使用CRITICAL_SECTION?这样做是明智的吗?如果没有,为什么?什么是替代品?
答案 0 :(得分:2)
由于有些使用非托管线程ID的警告,因为某些实现(如IIRC,SQL Server)将这些东西实现为在不同线程上运行的光纤,我也避免使用非托管的关键部分。
。我见过的.Net代码通常使用System::Threading::Monitor::Enter()
和Monitor::Exit()
作为其关键部分(方便地用C#中的lock
关键字包装)。否则,您也可以使用托管互斥锁。