4

我正在编写一个 Merb 应用程序,它使用 SimpleDB 和 Tokyo Tyrant 的组合进行存储。对于这两个数据存储,我通过为列表中的每个值启动一个线程然后合并结果集来实现IN (list)类型功能。请记住,这是一个 Web 应用程序,我应该创建的线程数量是否有限制?Ruby 1.8.7,所以它们不是内核线程。

4

3 回答 3

1

对于您在这里尝试做的事情,线程似乎是一种不好的方法,如果您不能使用 JRuby,我会完全放弃线程。但是,您可以创建一个加载数据库的 ruby​​ 文件并使用基准库对哪个数字最快进行一些基准测试。您可能还想查看使用的内存。

于 2009-12-14T16:46:56.200 回答
1

对我来说,您的问题听起来受 IO 限制,因此单核多线程可能会有所帮助。

大多数时候,在您的主 Ruby 循环中,您可能会等待在单独的多线程进程中运行的 tokyo tyrant 和 simple DB。

那么有多少线程呢?谁知道?您将不得不进行基准测试和测量

于 2009-12-14T21:54:58.113 回答
0

如果您正在使用 MRI,那么在这种情况下使用线程不会有太大帮助,因为 MRI 使用绿色线程,这在计算操作方面没有帮助。我相信那时使用 JRuby(本机线程)会有所帮助。我一直听说对于本机线程,最好使用(内核数 + 1)来利用可用内核。

于 2009-12-14T16:37:21.397 回答