2009-09-01 27 views
0

我剛剛意識到了有關死鎖的問題 - 即它們是什麼 - 我擔心影響我的Rails代碼的這個問題。在Rails代碼中應該注意哪些類型的併發/死鎖問題?

開發Rails應用程序時是否有任何特定的死鎖問題需要注意?

你有沒有遇到過Rails代碼中的死鎖 - 或者甚至有可能?

(我不是指數據庫死鎖 - 只有應用程序死鎖)。

+0

瞭解問題的地方就等着你瞭解比賽的條件! – 2009-09-01 20:51:00

回答

2

死鎖意味着競爭I/O資源,這就是爲什麼它最常出現在數據庫中。如果你不正確地鎖定和請求資源,並且你明確地使用線程,那麼你需要關心。

但是,緩解任何問題的具體步驟取決於您所訪問的I/O類型。

0

Rails不有許多操作系統級僵局的擔憂,因爲Ruby 1.8中是單線程的,甚至在1.9鎖定

所關注的問題主要是在數據庫中。 Rails有一個雙重打擊的地方,ActiveRecord從數據庫中抽象出來,像FKs和約束被推入應用程序級驗證(before_save,validates_ *等),結果阻礙了開發人員考慮數據庫死鎖情況。

如果你使用MySQL,你可以使用InnoDB的(默認的Rails)這裏http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.html