■2004-02-15
* [Perl] Thread::Tie
Thread::Conveyorなどの土台になるThread::Tieがwindows上(windows2000 with activeperl5.8.1以降)で動かない理由がある程度わかりました。シリアライズの後処理でメモリアクセス違反になるためと、デッドロックするためでした。1番目はperl内部の問題なのでどうしようもないのですが、コードを修正して何とか回避。2番目はPerl5.8.3からcond_waitに追加された機能で回避できてしまうのですが、理由が自分で納得できません。とりあえずwindows上でも5.8.3以降なら動かせると……。 5.8.1で正しくロックされるように修正できました。が、本当に大丈夫かどうかは怪しいです。う〜ん