没有合适的资源?快使用搜索试试~ 我知道了~
多线程讲生产者与消费者
需积分: 9 2 下载量 32 浏览量
2013-03-17
21:47:08
上传
评论
收藏 5KB TXT 举报
温馨提示
试读
8页
多线程生产者与消费者,,生产者和消费者的解答网络上有多种线程版本,但却没看到进程版本,所以我就来填补这一“空白”了。PS:使用进程版本的另一个重要原因是,想顺便复习下共享内存。 我们使用信号量来同步,用一个整型数组来当缓冲区。很显然这两者都要能够在各生产者和消费者进程间全局可见,所以我们用共享内存来实现他们。
资源推荐
资源详情
资源评论
生产者与消费者问题是典型的同步问题。这里简单介绍两种不同的实现方法。
1, 条件变量
[python] view plaincopy
01.import threading
02.
03.import time
04.
05.class Producer(threading.Thread):
06.
07. def __init__(self, t_name):
08.
09. threading.Thread.__init__(self, name=t_name)
10.
11.
12.
13. def run(self):
14.
15. global x
16.
17. con.acquire()
18.
19. if x > 0:
20.
21. con.wait()
22.
1, 条件变量
[python] view plaincopy
01.import threading
02.
03.import time
04.
05.class Producer(threading.Thread):
06.
07. def __init__(self, t_name):
08.
09. threading.Thread.__init__(self, name=t_name)
10.
11.
12.
13. def run(self):
14.
15. global x
16.
17. con.acquire()
18.
19. if x > 0:
20.
21. con.wait()
22.
23. else:
24.
25. for i in range(5):
26.
27. x=x+1
28.
29. print "producing..." + str(x)
30.
31. con.notify()
32.
33. print x
34.
35. con.release()
36.
37.
38.
39.class Consumer(threading.Thread):
40.
41. def __init__(self, t_name):
42.
43. threading.Thread.__init__(self, name=t_name)
44.
45. def run(self):
46.
47. global x
48.
49. con.acquire()
50.
51. if x == 0:
52.
24.
25. for i in range(5):
26.
27. x=x+1
28.
29. print "producing..." + str(x)
30.
31. con.notify()
32.
33. print x
34.
35. con.release()
36.
37.
38.
39.class Consumer(threading.Thread):
40.
41. def __init__(self, t_name):
42.
43. threading.Thread.__init__(self, name=t_name)
44.
45. def run(self):
46.
47. global x
48.
49. con.acquire()
50.
51. if x == 0:
52.
剩余7页未读,继续阅读
资源评论
hqying
- 粉丝: 0
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功