1.观察/threads/synch.h中Semaphore的定义
2.观察/lib3/ring.h和ring.cc
可知,slot定义了一个可以存取thread_id(用来存放生产者id)和value(用于存放代表信息的数字)的结构。而Ring定义了一个可以存取slot的循环队列。
3.补全/lib3/producons.cc中的代码实现生产者消费者
大致要补充的内容可以分成四部分
①初始化信号量
简单初始化nempty,nfull,mutex三个信号量即可
nempty = new Semaphore(“emptyS”, BUFF_SIZE);
nfull = new Semaphore(“fullS”, 0);
mutex = new Semaphore(“mutex”, 1);
②创建和fork生产者消费者线程
按实验一中代码实例初始化和fork
Thread *t = n