2011-05-10 77 views
10

我正在弹镐,寻找有关Thread的文档,并且遇到了ThreadGroupRuby的ThreadGroup是什么?

该文档描述了它的功能,但没有说明它的用途。

是与线程池相关的线程组,我assumed Ruby doesn't have

+0

犹豫,要留下一个真实的答案,但看看谷歌codesearch的用法,我认为你已经击掌了脑袋,它是所谓的绿色线程的线程池。 – 2011-05-10 03:03:39

+0

@RussC我认为这只是执行线程池的一部分。您必须将作业数据添加到“队列”中,并让线程将项目从队列中弹出。我基于维基百科定义的线程池:http://en.wikipedia.org/wiki/Thread_pool_pattern。另外,从ruby 1.9开始,线程是本地的而不是绿色的。 – Kelvin 2012-06-01 21:26:21

回答

7

在其父代的ThreadGroup中创建新线程。您可以使用ThreadGroup来组织由生成其他线程的父线程给出的隐式树结构,并使用list实例方法获取所有尚未终止的线程,即定义在组中的所有线程上运行的方法。

另外,如果您运行不受信任的代码并且要密切关注它产生的线程,则可以使用enclose禁止向该组添加(或删除)线程。

+2

你能描述一下你为什么要使用它,而不是它做什么? – 2011-05-10 22:54:17

+1

把它看作专用于线程的数组。您可以组织一组并发任务,例如检查该组的所有任务是否完成。除'enclose'方法之外,只需保持线程的组织性 - Thread类本身不提供关于谁创建线程的信息。 Perheaps是我正在研究的实验的一个例子:我有许多代理正在同时运行,并以团队分隔。我可以使用ThreadGroups来组织代理线程,以降低团队的优先级,或者检查团队中有多少个代理线程仍然存在。 – dhoelzgen 2011-05-11 09:44:44