我认为TryEnterCriticalSection
只能调用一次。所以我只想知道TryEnterCriticalSection
和EnterCriticalSection
之间的区别。
#include<windows.h>
CRITICAL_SECTION csOpsPrintData;
void CreateCriticalSectionAsNeccessary()
{
InitializeCriticalSection(&csOpsPrintData);
InitializeCriticalSectionAndSpinCount(&csOpsPrintData,5);
EnterCriticalSection(&csOpsPrintData);
TryEnterCriticalSection(&csOpsPrintData);
}
答案 0 :(得分:2)
区别在于TryEnterCriticalSection立即返回, 无论是否获得关键部分的所有权, 而EnterCriticalSection阻塞,直到线程可以取得所有权 关键部分。
MSDN,Bing是你的朋友。
TryEnterCriticalSection
也会返回一个值(而EnterCriticalSection
不会返回),如果调用成功则返回非零值,因此线程声明了所有权。如果不是这样,则为零。