0

我有一个关于我当前线程设计的问题——我当前的进程产生一个新线程并继续主线程直到终止条件。该进程一直等到所有线程都完成后才终止。我遇到的问题是产生的每个新线程都需要查看产生的前一个线程是否已完成。我应该简单地设置一个队列并只使用一个线程来处理所有任务吗?或者是否有可能产生一个线程,以某种方式检查前一个线程是否已完成并仅在该线程完成后才处理任务?

感谢您的帮助

4

2 回答 2

4

如果除了初始“主”线程之外​​的所有线程都应该按顺序运行,那么是的,您应该使用任务队列和单个工作线程。

Queue.join()可以帮助解决这个问题(如果它需要等待所有排队的任务完成,则允许您的主线程运行)。

于 2012-03-29T02:10:34.197 回答
0

看看格文特
您可以为您的多个任务创建多个 Greenlet 对象。
每个greenlet都是绿色线程

从 gevent 导入猴子
猴子.patch_all()
导入 gevent
从 gevent 导入 Greenlet

类任务(Greenlet):
    def __init__(self, name):
        Greenlet.__init__(self)
        self.name = 名称    
    定义_运行(自我):
        print "Task %s: some task..." % self.name

t1 = 任务(“任务 1”)
t2 = 任务(“任务 2”)
t1.start()
t2.start()
# 这里我们正在等待所有任务
gevent.joinall([t1,t2])
于 2012-03-29T03:13:58.870 回答