linux 条件变量

等待者

pthread_mutex_lock(&m_TheadMutex); while(m_dwActiveThreadCount != m_TotalWorkerTheadCount || m_HasActiveHandles==1) { pthread_cond_wait(&m_OwnerCanGo, &m_TheadMutex); } pthread_mutex_unlock(&m_TheadMutex); //条件变量中的条件二字就体现为"m_dwActiveThreadCount != m_TotalWorkerTheadCount || m_HasActiveHandles==1" //wait内部释放mutex, 等待条件变量被唤醒者激活(signal), 激活后会重新获取mutex, 再次while来判断条件表达式是否成立 比较拗口

 

 

唤醒者

pthread_mutex_lock(&pThis->m_TheadMutex); pthread_cond_signal(&pThis->m_OwnerCanGo); pthread_mutex_unlock(&pThis->m_TheadMutex);

 

 

初始化 与 释放

pthread_cond_init(&m_OwnerCanGo, NULL); pthread_mutex_init(&m_TheadMutex, NULL); pthread_mutex_destroy(&m_TheadMutex); pthread_cond_destroy(&m_OwnerCanGo);

你可能感兴趣的:(linux 条件变量)