window临界区和互斥量Mutex
临界区相关API:
void InitializeCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);
void DeleteCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);
void EnterCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);
void LeaveCriticalSection(LPCRITICAL_SECTIONlpCriticalSection);
同一个线程可以多次进入临界区。进入和退出的次数必须相等(类似递归锁recursive_lock)。
C++11 的互斥量不能多次lock(),第二次lock会抛出异常。
std::timed_mutex 和std::recursive_timed_mutex
std::timed_mutex 带超时功能的互斥量
- try_lock_for 返回值是bool,用于判断是否超时。时间段,超时无法取到锁就往下执行。
- try_lock_unti 返回值是bool,用于判断是否超时。时间点,超时无法取到锁就往下执行。
//伪代码
std::timed_mutex t_mutex;
if(t_mutex.try_lock_for == true)//在规定时间内拿到了锁
{
}
else //拿不到锁
{
}