3 POSIX 多任务及同步机制-拓展实验 条件变量与生产者-消费者问题
3 POSIX 多任务及同步机制-拓展实验 条件变量与生产者-消费者问题 一.实验目的 ·理解进程、线程同步问题。 ·掌握POSIX条件变量机制的使用方法。 ·深入理解在动态并发环境下,进程、线程在运行过程中的资源竞争应发的问题,如虚假唤醒 二.实验背景 ·Recall: 进程的同步与互斥 同步问题 互斥问题 ·互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。 ·同步(狭义):异步环境下的一组并发进程,因直接制约而互相发送消息而进行相互合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步 ·要解决线程之间的狭义同步问题,有如下两种思路。 ·一种是使用轮询方法,也就是俗称的“忙等待”。就是等待条件满足的线程不断的去查询条件是否得到满足;这种方法实现较为简单,但是会有一定的性能消耗。如果轮询的间隔时间太短,由于上下文的切换就会消耗较多资源;而间隔时间太长则不能及时地响应。 ·另外一种方法就是当条件不满足时,等待该条件的线程就会休眠;当条件满足时系统会唤醒等待该条件的线程,也被称为消息通知机制。 ·条件变量的声明、初始化和销毁 声明:以变量方式声明 P.203, 初始化和销毁函数 ·条件变量的使用: 等待:与一个互斥锁结合使用, pthread_cond_wait 唤醒: pthread_cond_signal 三