Ruby on rails 在Rails代码中应该注意哪些类型的并发/死锁问题?

Ruby on rails 在Rails代码中应该注意哪些类型的并发/死锁问题?,ruby-on-rails,ruby,concurrency,multithreading,deadlock,Ruby On Rails,Ruby,Concurrency,Multithreading,Deadlock,我刚刚认识到死锁——即死锁是什么——我担心这个问题会影响我的Rails代码 在开发Rails应用程序时,是否有任何特定的死锁问题需要注意 您是否曾经在Rails代码中遇到过死锁,或者这是可能的 (我不是指数据库死锁-仅指应用程序死锁)。死锁意味着对I/O资源的竞争,这就是为什么它最常出现在数据库中。如果您不正确地锁定和请求资源,并且显式地使用线程,那么您需要担心 但是,为缓解任何问题而采取的具体步骤取决于您正在访问的I/O类型 Rails没有太多操作系统级死锁问题,因为Ruby 1.8是单线程的

我刚刚认识到死锁——即死锁是什么——我担心这个问题会影响我的Rails代码

在开发Rails应用程序时,是否有任何特定的死锁问题需要注意

您是否曾经在Rails代码中遇到过死锁,或者这是可能的


(我不是指数据库死锁-仅指应用程序死锁)。

死锁意味着对I/O资源的竞争,这就是为什么它最常出现在数据库中。如果您不正确地锁定和请求资源,并且显式地使用线程,那么您需要担心


但是,为缓解任何问题而采取的具体步骤取决于您正在访问的I/O类型

Rails没有太多操作系统级死锁问题,因为Ruby 1.8是单线程的,甚至在1.9中也是锁定的

关注点主要在数据库中。Rails有一个双重打击,ActiveRecord从数据库中抽象出来,FKs和约束之类的东西被推送到应用程序级验证中(在保存、验证等之前),其结果会阻止开发人员考虑DB死锁的情况


如果您使用的是MYSQl,您可以在这里了解innodb(Rails中的默认设置)的问题区域

只要等待,直到您了解竞争条件!