- 637 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 11:14:26 ]
- >>636
そこが疑問ですよ。なんで既に取得してオープンされているファイル ディスクリプタと同じ値のファイルディスクリプタが返って来るのか という点がね。 気になるのは Linux の場合スレッドは clone() システムコールで作った 特殊な別プロセスであるということです。別プロセスだから複数スレッドで accept() した時に同一ファイルディスクリプタが取れてしまうんじゃない かな、とは思ったんですが、確証がなかったので質問したんです。 (Linux板の方で質問した方がよかったかな? でも他のOSではこういうのは できないのかも少し気になる)。 で、その後、accept() を一つのスレッドでだけやって、他のスレッドは 待機させておいて、accept() 成功後にファイルディスクリプタを待機 スレッドに渡すように作り替えたらちゃんと動くプログラムは作れました。 理由はどうあれこういう風にするか、あるいは accept() 成功後にスレッド 作るように書かないと駄目なようですね。
|

|