首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby线程死锁

Ruby线程死锁
EN

Stack Overflow用户
提问于 2009-12-04 04:35:07
回答 3查看 1K关注 0票数 0

目前我正在写一个项目,其中包括运行两个并行线程,以定期从不同的来源拉取数据。我正在使用Ruby1.9中的线程功能来做这件事,但不幸的是我遇到了死锁问题。我还有一种感觉,Thread.join方法导致线程排队,而不是并行运行。

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

干杯

帕特里克

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

EN

回答 3

Stack Overflow用户

发布于 2009-12-04 05:00:46

您可以使用来自标准库的同步机制,如互斥、监视器、队列、SizedQueue。还是在使用它们时有问题?

票数 1
EN

Stack Overflow用户

发布于 2009-12-04 06:40:33

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

Thread.join与并行执行没有任何关系--它是一种同步方法,可以让一个线程(通常是主线程)等待一个或多个线程完成。

票数 1
EN

Stack Overflow用户

发布于 2009-12-04 06:55:15

您使用的是哪个Ruby 1.9实现?YARV不能并行运行Ruby线程。目前,还没有可以并行运行线程的Ruby1.9的生产就绪实现。JRuby可以并行处理线程,但是它的Ruby1.9实现还不是很完整。(虽然它是稳定的,所以如果您需要的所有功能都在那里,您就可以使用它。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1842738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档