Linux的C编程线程问题 60
假设有100个reader和100个writer要访问1个文件,reader只负责读文件,writer只负责写文件。要求如下:(1)允许多个reader同时读一个文件;(...
假设有100个reader和100个writer要访问1个文件,reader只负责读文件,writer只负责写文件。要求如下:
(1) 允许多个reader同时读一个文件;
(2) 当有一个writer在写文件时,不允许其他reader和writer访问读写该文件。
(3) 当reader在读文件时,不允许writer写文件,但允许其他reader读文件
2. 说明
(1) 在main()函数里用pthread_create()函数创建100个线程分别调用Reader()函数和Writer()函数,既100个reader,100个writer;
(2) Reader()函数和Writer()函数都有一个参数id,表示reader/writer的id,范围从0~99。调用pthread_create时把id参数传递给Reader()和Writer()函数;
(3) 变量ReaderNum和WriterNum分别用于记录当前reader和writer的数量;
(4) 函数SleepRandom(),ReadFile(), WriteFile()由题目提供,不用修改。SleepRandom()用于让线程Sleep一个随机时间,从0 ~1秒,ReadFile()模拟读文件操作并打印相关信息,WriteFile()模拟写文件操作并打印相关信息;
(5) 利用Mutex,完成整个程序homework4.c,达到题目的要求
(6) 提示:重点是Reader()函数和Writer()函数,可根据需要增加其他变量或函数 展开
(1) 允许多个reader同时读一个文件;
(2) 当有一个writer在写文件时,不允许其他reader和writer访问读写该文件。
(3) 当reader在读文件时,不允许writer写文件,但允许其他reader读文件
2. 说明
(1) 在main()函数里用pthread_create()函数创建100个线程分别调用Reader()函数和Writer()函数,既100个reader,100个writer;
(2) Reader()函数和Writer()函数都有一个参数id,表示reader/writer的id,范围从0~99。调用pthread_create时把id参数传递给Reader()和Writer()函数;
(3) 变量ReaderNum和WriterNum分别用于记录当前reader和writer的数量;
(4) 函数SleepRandom(),ReadFile(), WriteFile()由题目提供,不用修改。SleepRandom()用于让线程Sleep一个随机时间,从0 ~1秒,ReadFile()模拟读文件操作并打印相关信息,WriteFile()模拟写文件操作并打印相关信息;
(5) 利用Mutex,完成整个程序homework4.c,达到题目的要求
(6) 提示:重点是Reader()函数和Writer()函数,可根据需要增加其他变量或函数 展开
1个回答
展开全部
这么多内容,没时间写,给你点资料,自己去看了写吧:
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part2/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part3/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part4/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part5/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part2/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part3/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part4/index.html
http://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part5/index.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询