在 C# 中,沒有直接的類似于 C++ 中的 CRITICAL_SECTION 的同步原語。不過,你可以使用 Monitor 類來實現類似的功能。
下面是在 C# 中解決 CRITICAL_SECTION 問題的一種方法:
private static object _lockObject = new object();
lock (_lockObject)
{
// 需要保護的代碼塊
}
注意:lock 語句會自動獲取 _lockObject 的鎖,進入臨界區代碼塊后,其他線程將被阻塞,直到該線程釋放鎖。
這種方法確保了在任何給定時間只有一個線程可以進入臨界區,從而實現了類似于 CRITICAL_SECTION 的功能。
然而,C# 中還有其他同步原語可以使用,如使用 Mutex 類、Semaphore 類或自旋鎖等。具體使用哪種同步原語取決于你的需求和場景。