Ruby线程死锁

Ruby线程死锁,ruby,concurrency,multithreading,deadlock,Ruby,Concurrency,Multithreading,Deadlock,我现在正在写一个项目,其中包括运行两个并行线程,定期从不同的来源提取数据。我使用ruby 1.9中的线程功能来实现这一点,但不幸的是遇到了死锁问题。我还感觉到Thread.join方法导致线程排队,而不是并行运行 我是多线程编程新手,如有任何建议,将不胜感激 干杯 帕特里克 编辑:这两个线程正在访问的共享资源是一个mysql数据库,这可能是问题所在。死锁在运行这些线程的几次迭代后出现。您可以使用同步机制,例如来自standart库的互斥、监视器、队列、SizedQueue。或者使用时出现问题?您

我现在正在写一个项目,其中包括运行两个并行线程,定期从不同的来源提取数据。我使用ruby 1.9中的线程功能来实现这一点,但不幸的是遇到了死锁问题。我还感觉到
Thread.join
方法导致线程排队,而不是并行运行

我是多线程编程新手,如有任何建议,将不胜感激

干杯

帕特里克


编辑:这两个线程正在访问的共享资源是一个mysql数据库,这可能是问题所在。死锁在运行这些线程的几次迭代后出现。

您可以使用同步机制,例如来自standart库的互斥、监视器、队列、SizedQueue。或者使用时出现问题?

您可以使用standart库中的同步机制,如互斥、监视器、队列、SizedQueue。或者在使用它们时出现问题?

如果没有更多细节,很难诊断出可能出现的问题,但死锁(显然)是由多个线程试图获取其他线程持有的资源造成的。这实际上意味着您必须至少有两个互斥体和两个线程。你的代码中会发生这种情况吗


join与并行执行无关-它是一种同步方法,使一个(通常是主)线程能够等待一个或多个线程完成

在没有更多细节的情况下,很难诊断出可能出现的问题,但死锁(显然)是由多个线程试图获取他人持有的资源造成的。这实际上意味着您必须至少有两个互斥体和两个线程。你的代码中会发生这种情况吗


join与并行执行无关-它是一种同步方法,使一个(通常是主)线程能够等待一个或多个线程完成

您使用的是哪种Ruby 1.9实现?YARV无法并行运行Ruby线程。目前,还没有Ruby 1.9的产品级实现可以并行运行线程。JRuby可以并行运行多个线程,但是它的Ruby 1.9实现还没有完全完成。(虽然它是稳定的,所以如果您需要的所有功能都在那里,您可以使用它。)

您使用的是哪种Ruby 1.9实现?YARV无法并行运行Ruby线程。目前,还没有Ruby 1.9的产品级实现可以并行运行线程。JRuby可以并行运行多个线程,但是它的Ruby 1.9实现还没有完全完成。(虽然它很稳定,所以如果您需要的所有功能都在那里,您可以使用它。)

嗨,帕特里克。你介意发一些代码让我们看一下吗?同时,阅读Pickaxe书中的线程和进程部分可能会有所帮助。嗨,帕特里克。你介意发一些代码让我们看一下吗?同时,阅读Pickaxe书中的线程和进程部分可能会有所帮助。我不知道这种机制。我现在将查看他们的文档。thanksI不知道这种机制。我现在将查看他们的文档。谢谢