Windows と Linux で動作するソフトウェアを手に入れるまでの道のりで、ソケット層を書き直さなければなりませんでした。Windows では、select から WSAPoll に変更し、標準イベントを含める前に WSAWaitForMultipleEvents を使用して、必要に応じてタイムアウト前に操作をキャンセルしました。1024 を超える入出力ソケットを処理する必要があるため、Linux では select から poll に変更する必要があります。Linuxでポーリングの待機をキャンセルする方法はありますか? リモート接続を追加する必要があります。これは、ポーリングによる待機タイムアウトによって遅くなります。
質問する
1019 次
1 に答える
2
を使用して疑似内部イベントを作成し、pipe()
これの読み取り側をpoll()
リストに追加して、最初のイベントにします。
ポーリングをキャンセルしたい場合は、パイプに文字を書き込むpoll()
と返されます。インデックス 0 を持つため、内部イベントであることがわかります。
さまざまな値をパイプに渡すことで、これを大雑把なメッセージング システムにすることもできます。
手動イベントを使用して、Windows コードで同じことを行うことができます。
まさにそれを行うこのIoEvent
クラスを参照してください。
于 2013-10-02T08:52:43.867 に答える