互斥锁和信号量都是针对多线程编程线程间同步的技术工具。
互斥锁的功能:被互斥锁锁住的任意代码段,在同一时间只能有一个在运行。
例如:
//-----------------------
pthread_mutex_lock()
代码段A
pthread_mutex_unlock()
//-----------------------
//-----------------------
pthread_mutex_lock()
代码段B
pthread_mutex_unlock()
//-----------------------
//-----------------------
pthread_mutex_lock()
代码段C
pthread_mutex_unlock()
//-----------------------
代码段A,B,C在同一个时间内,只能有一个在执行。
信号量的功能:动作之间的同步,可以在多个线程的无序运行中达到部分核心动作的序列执行。
例如:
//-----------------------
sem_wait()
代码段A
//-----------------------
//-----------------------
代码段B
sem_post()
//-----------------------
执行顺序:代码段B, 代码段A
阅读(506) | 评论(0) | 转发(0) |