简而言之:在线程内部生成线程是标准过程还是应该尽可能避免?
一个例子:想象一个并行蜘蛛同时检索和解析多个文档。 在我的推理中,有问题的蜘蛛需要两个线程(FetcherPool、ParserPool)生成 Fetcher 和 Parser 工作线程,以便使所有内容同时工作(见下文)。
示例:
Main Thread
|------FetcherPool
| |------Fetcher
| |------Fetcher
|
|------ParserPool
|------Parser
|------Parser
干杯
最佳答案
不 - 因为你不能从其他任何东西生成线程。您在脚本中生成的第一个线程是从“主”线程生成的。如果您在非多线程应用程序中执行“Thread.current”,您将获得此主线程。 “Thread.main”也返回它。
但是,如果您的问题是关于从“main”以外的线程生成,我认为这也没有什么本质上的坏处。为了您自己(或您的团队)的理智,您应该设计线程管理,以便工作人员不会失去控制(例如,产生的数量超出您的预期)。还应考虑代码可读性和控制对共享资源的访问。
这是一篇关于多线程问题的有趣文章:http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf
一般来说,将线程封装到对象中并只调用这些对象的方法是一个好主意。它使代码更容易理解。
关于ruby - 在线程内部生成线程是标准做法还是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763666/