同步方式
(1)信号量:线程同步
- ①p(sv)sem_wait():信号大于0,则减一,信号小于0,则挂起。
- ②v(sv)sem_post():信号加一,大于0,则其他被p操作阻塞的线程将被唤醒。
(2)互斥量:线程互斥 进程互斥
-
①进入临界区时获得互斥锁,并加锁,离开临界区时,对互斥锁解锁。
-
②Pthread_mutex_init:初始化互斥锁。
-
③Pthread_mutex_destroy:销毁互斥锁。
-
④Pthread_mutex_lock:以原子操作的方式加锁,若已锁则阻塞。
-
⑤Pthread_mutex_unlock:以一个原子操作的方式解锁。
(3)条件变量:当共享数据到达某一值时,唤醒等待这个共享数据的一个或多个线程。
- ①Pthread_cond_init:初始化条件变量。
- ②Pthread_cond_destroy:销毁条件变量。
- ③Pthread_cond_signal:唤醒一个等待条件变量的线程。
- ④Pthread_cond_wait:等待目标条件变量。需要互斥锁保证原子性,wait前解锁,接收到信号加锁。