私が取り組んでいるアプリケーションには、いくつかのセカンダリスレッドが必要であり、それぞれが多数のファイルハンドル(少なくとも1、10以上)を担当します。select
ファイルハンドルはスレッド間で共有されないため、読み取り/書き込みの準備ができているかどうかを確認するときに、一方のセカンダリスレッドがもう一方のスレッドをブロックすることを心配する必要はありません。私が確認したいのは、select
/pselect
呼び出しの実行中に、どちらのセカンダリスレッドもメインスレッドの実行を停止させないということです。
これは問題ではないと思います。たとえば、Webサーバーでそのようなことが行われると思いますが、Googleで検索したところ、「はい、これはできます」と具体的に言っているものは見つかりませんでした。これは問題を引き起こさないという私の仮定で正しいですか?
明確にするために、私が持っているものは次のようになります:
実行のメインスレッド(
select()
着信コマンドメッセージと発信応答を処理するループ)二次スレッド#1(
select()
サービスを提供するループ)二次スレッド#2(
select()
別のサービスを提供するループ)
前に述べたように、ファイルハンドルはスレッド間で共有されません。個々のスレッド内で作成、使用、破棄され、他のスレッドはその存在を認識しません。