互斥锁与条件变量
互斥量
1.静态分配互斥量 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER
2.动态分配互斥量 pthread_mutex_init(&mutex); & pthread_mutex_destory(&mutex);
//操作:
1.pthread_mutex_lock 加锁
2.pthread_mutex_trylock 尝试加锁
3.pthread_mutex_unlock 解锁
4.保证线程正常 / 异常推出时可以释放互斥锁
pthread_cleanup_push
pthread_cleamup_pop
//套路:
threadHandle(){
pthread_cleanup_push(pthread_mutex_unlock, mutex);
pthread_mutex_lock(mutex);
do something...
pthread_exit(0);
pthread_cleamup_pop(0);//确认释放互斥锁
}
main(){
pthread_mutex_t mutex;//动态分配互斥量
pthread_mutex_init(&mutex,NULL);
for{;3; }
pthread_create(&tid[i], NULL, threadHandle, &mutex);
pthread_join(tid[i], NULL);
pthread_mutex_destory(&mutex);
}
条件变量
线程挂起直到共享数据某些条件满足
1.动态 pthread_cond_t
2.静态
函数:
条件等待 pthread_cond_wait(cond, m