我知道在YARV上运行的Ruby中,线程意味着并发而不是并行。我的问题是:在什么情况下,并发本身可以提高性能?例如,我可以想象当同时处理多个IO流时,并发将提高性能-如果一个任务很慢,这并不意味着堆栈中的所有后续任务都必须等待该任务完成。我说的对吗?还有没有其他类似的案例?[hopes that YARV will ever remove the GIL]/[overhead of creating threads with the GIL]的比率是否值得现在就开始在Ruby线程中使用呢?
发布于 2012-02-14 03:53:22
在有多个任务都需要等待一些不经常发生的外部刺激(例如,网络数据变得可用、磁盘读取完成等)的情况下,并发性可能非常有用。如果您只是坐在一个循环中等待这些操作之一发生,您可能会选择
在设计本质上由事件驱动的程序时,并发性也很有用,例如等待不同的UI事件发生。在这种情况下,您可以指定应该触发的任务以响应不同的UI事件,并且处理器可以处于休眠状态或处理其他任务,而无需显式等待未触发的任务运行。一旦事件发生,这些线程就可以唤醒并共享CPU处理时间。
希望这能有所帮助!
发布于 2012-02-14 04:02:14
Ruby模型工作良好的一种情况是当您使用Ruby驱动其他应用程序时。例如,如果你产生编译,你可以让一个Ruby线程处理一个外部进程。
另一个好处是,它允许您将应用程序划分为逻辑部分,并让一个线程处理每个部分。只使用一个线程就可以做到这一点,这可能需要您编写一个复杂得多的应用程序。
https://stackoverflow.com/questions/9267025
复制相似问题