临界区问题.pptVIP

  • 34
  • 0
  • 约2.81千字
  • 约 18页
  • 2016-06-19 发布于天津
  • 举报
临界区问题

* 进程同步(Process Synchronization)之 临界区问题(Critical Section Problem) 让我们先达成共识 对共享数据(Shared Data)的并发访问(Concurrent Access),可能导致数据不一致问题 确保数据一致性(Data Consistency),是个合理的要求。它需要一个机制,以保证合作进程们有序地执行 以生产者-消费者问题为例。设计一个整型变量count,总是记录缓冲区中被占用的单元总数。count的初始值为 0;当生产者进程注入一个单元数据时,count增 1;当消费者进程消费掉一个单元数据时,count减 1。 生产者-消费者问题的一种解法 共享变量(Shared data)描述有界缓冲区(Bounded Buffer) #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int count = 0; 进程独占变量 int in = 0; int out = 0; 生产者-消费者问题的一种解法(续) 生产者进程 item nextProduced; while (1) { while (count == BUFFER_SIZE) ; /* do nothing */

文档评论(0)

1亿VIP精品文档

相关文档