Ruby 初心者スレッド Part 48
■ このスレッドは過去ログ倉庫に格納されています
0083デフォルトの名無しさん
2012/02/17(金) 12:41:45.79Rubyの組み込みメソッドsleepは発行元のプロセスを指定秒数ブロックさせる仕様だから、
そのプロセスに所属するすべてのスレッドも一緒にブロックされてしまう
だから、>>81のWebrickでsleepを用いた時の挙動は正しいと言える
もしもある特定のスレッドだけを指定秒数だけブロックさせたいのなら、
タイマーとスレッド間同期機構を使ったコードを自力で実装しなければならない
あとRailsの場合には、Rails自身がリエントラントで設計されていないから、
コントローラの入り口で(=リクエストを受け付けた直後に)排他制御しているらしい
したがって、Railsアプリ内で不用意にスレッドを待たせるとRailsプロセス全体が
ブロックしてしまう可能性があり、上記のWebrick以上に慎重なスレッド設計が求められる
ただし、自分はRailsに詳しくないので、最新版での仕様等はRailsスレで確認して欲しい
■ このスレッドは過去ログ倉庫に格納されています