⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 读者写者程序.txt

📁 通过课程设计
💻 TXT
字号:
读者-写者问题(reader and writer problems)2007-09-11 23:09哲学家问题对于多个竞争进程互斥地访问有限资源(如I/O设备)这一类问题的建模十分有用。另一个著名的问题是读者-写者问题,它为数据库访问建立了一个模型。例如,设想一个飞机定票系统,其中有许多竞争的进程试图读写其中的数据。多个进程同时读是可以接受的,但如果一个进程正在更新数据库,则所有其他进程都不能访问数据库,即使读操作也不行。这里的问题是:如何对读者和写者进行编程?图2-19给出了一种解法。 

 typedef int semaphore;
 semaphore mutex=1;   /* control access RC */
 semaphore db=1;    /* control access database */
 int rc=0;    /* number of process reading */

 void reader(void)
 {
 while(TRUE){    /* loop */
   down(&mutex); /* block access rc */
   rc = rc+1;   /*add one more reader*/
   if(rc == 1)
   down(&db);   
   /*if it is first reader,than...*/
   up(&mutex);   /*resume access rc*/
   read_data_base(); /*access db*/
   down(&mutex);   /*block access rc*/
   rc = rc -1;   /*decrease reader*/
   if(rc==0)
   up(&db);    
   /*if this is last reader, than......*/
   use_data_read(); /*critical region */
   }
 }

 void writer(void)
 {
 while(TRUE)
   {
   think_up_data(); /*critical region operation*/
   down(&db);   /*block access db*/
   write_data_base(); /*upgrade access*/
   up(&db);    /*resume access*/
   s}
 }

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -