请教下关于多线程协调的

2016-10-03 19:16:52 +08:00
 lbxx
现在有 1 万件事(按 1-10000 排列),给 4 个线程 ABCD 去做,每件事处理完的数据都要存进 MYSQL
那么这 4 个线程之间改如何协调?

比如 A 干了 1 ,那么 B 就不应该再去做 1 ,而是做 2

我能想到的就是给个 list 将做过的事情标记起来,比如 [1,2],但是总感觉这样不行,有无其他好方法?
2446 次点击
所在节点    Python
10 条回复
bianzhifu
2016-10-03 22:39:02 +08:00
Queue
zhuangzhuang1988
2016-10-03 23:46:31 +08:00
推荐看这个, https://book.douban.com/subject/4214617/ Windows 并发编程指南,
里面有详细记载关于任务分割的几种方法,优缺点,还有些高级技术
aploium
2016-10-04 08:19:41 +08:00
https://github.com/aploium/mpms

用 Queue, 这是个 demo (好吧其实是写给自己用的简陋框架),
使用 5 个进程, 每个进程 10 个线程, 下载 1000 次 http://example.com 并保存到文件
aploium
2016-10-04 08:22:06 +08:00
准确地说是下载 http://example.com/?q=1http://example.com/?q=1000 一共 1000 条 url
aihimmel
2016-10-04 08:58:17 +08:00
简单的话可以用一个全局变量解决?
线程内用循环。。
lbxx
2016-10-04 10:33:36 +08:00
@bianzhifu
@aploium Nice 感谢。学习下
lbxx
2016-10-04 10:36:40 +08:00
slysly759
2016-10-05 00:42:51 +08:00
pool.map
hrong
2016-10-05 08:09:51 +08:00
JAVA 的话 fork join
fhefh
2016-10-05 11:36:25 +08:00
nice~~~ mark

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/310416

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX