05并发性互斥和同步-中山大学数据科学与计算机学院
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 无限缓冲区的(二元信号量)解决方案 int n; /*缓冲区中产品数*/ Binary_semaphore s=1; /*互斥*/ Binary_semaphore delay=0; /*等待*/ void producer() { while (true) { produce(); semWaitB(s); append(); n++; if (n==1) semSignalB(delay); semSignalB(s); } } void consumer() { semWaitB(delay); while (true) { semWaitB(s); take(); n--; semSignalB(s); consume(); if (n==0) semWaitB(delay); } 少执行一次 } void main() { n=0; parbegin(producer, consumer) ; } 存在漏洞:超前消费 切换→ * 基于
原创力文档

文档评论(0)