From: Tomoyuki Chikanaga Date: 2012-11-10T22:33:38+09:00 Subject: [ruby-dev:46474] Re: トラップハンドラで許されない操作はなにか --f46d04428c6e982a3804ce241d70 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 近永と申します。 ええと,「Mutex が使えない」というのは「trap handler は main thread と > 同じ context なので,main thread が Mutex を lock している場合,trap > handler 内で Mutex を掴もうとすると例外が出てしまうから使えない」という > 意味であってますよね. はい。そういう意味でした。 補足しておくと、現状ではシグナルハンドラは再入し得る(シグナルハンドラ実行中に再度シグナルハンドラが起動される)ので、メインスレッドでは同じ Mutex とか Queue とか Monitor に触らないようにしても完全には回避されません。 なのでシグナルハンドラ用のスレッドを導入するのに加えて、シグナルハンドラの実行中には同じシグナルハンドラの呼び出しはマスクされるというのも必要かなぁと思っております。 --f46d04428c6e982a3804ce241d70 Content-Type: text/html; charset=ISO-2022-JP Content-Transfer-Encoding: base64 GyRCNmExSiRIPz0kNyReJDkhIxsoQjxicj48ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+PGJyPgo8 ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBz dHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGlu Zy1sZWZ0OjFleCI+GyRCISEkKCQoJEghJCFWGyhCTXV0ZXggGyRCJCw7SCQoJEokJCFXJEgkJCQm JE4kTyFWGyhCdHJhcCBoYW5kbGVyIBskQiRPGyhCIG1haW4gdGhyZWFkIBskQiRIGyhCPGJyPgob JEJGMSQ4GyhCIGNvbnRleHQgGyRCJEokTiRHISQbKEJtYWluIHRocmVhZCAbJEIkLBsoQiBNdXRl eCAbJEIkchsoQiBsb2NrIBskQiQ3JEYkJCRrPmw5ZyEkGyhCdHJhcDxicj4KaGFuZGxlciAbJEJG YiRHGyhCIE11dGV4IBskQiRyRE8kYiQmJEgkOSRrJEhOYzMwJCw9UCRGJDckXiQmJCskaTtIJCgk SiQkIVckSCQkJCYbKEI8YnI+ChskQjBVTCMkRyQiJEMkRiReJDkkaCRNISUbKEImbmJzcDsmbmJz cDs8L2Jsb2NrcXVvdGU+PGRpdj4bJEIkTyQkISMkPSQmJCQkJjBVTCMkRyQ3JD8hIxsoQjxicj4b JEJKZEItJDckRiQqJC8kSCEiOD0+dSRHJE8lNyUwJUolayVPJXMlSSVpJE86RkZ+JDdGQCRrGyhC KBskQiU3JTAlSiVrJU8lcyVJJWk8QjlUQ2YkSzpGRVklNyUwJUolayVPJXMlSSVpJCw1L0YwJDUk bCRrGyhCKRskQiROJEchIiVhJSQlcyU5JWwlQyVJJEckT0YxJDgbKEIgTXV0ZXggGyRCJEgkKxso QiBRdWV1ZSAbJEIkSCQrGyhCIE1vbml0b3IgGyRCJEs/KCRpJEokJCRoJCYkSyQ3JEYkYjQwQTQk SyRPMnNIciQ1JGwkXiQ7JHMhIxsoQjxicj4bJEIkSiROJEclNyUwJUolayVPJXMlSSVpTVEkTiU5 JWwlQyVJJHJGM0Z+JDkkayROJEsyQyQoJEYhIiU3JTAlSiVrJU8lcyVJJWkkTjxCOVRDZiRLJE9G MSQ4JTclMCVKJWslTyVzJUklaSROOEYkUz1QJDckTyVeJTklLyQ1JGwkayRIJCQkJiROJGJJLE1X JCskSiQhJEg7VyRDJEYkKiRqJF4kOSEjGyhCPGJyPgo8YnI+PGZvbnQgY29sb3I9IiM4ODg4ODgi PjwvZm9udD48L2Rpdj48L2Rpdj48YnI+PC9kaXY+Cg== --f46d04428c6e982a3804ce241d70--