等待者 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);