1

Windows と Linux で動作するソフトウェアを手に入れるまでの道のりで、ソケット層を書き直さなければなりませんでした。Windows では、select から WSAPoll に変更し、標準イベントを含める前に WSAWaitForMultipleEvents を使用して、必要に応じてタイムアウト前に操作をキャンセルしました。1024 を超える入出力ソケットを処理する必要があるため、Linux では select から poll に変更する必要があります。Linuxでポーリングの待機をキャンセルする方法はありますか? リモート接続を追加する必要があります。これは、ポーリングによる待機タイムアウトによって遅くなります。

4

1 に答える 1

2

を使用して疑似内部イベントを作成し、pipe()これの読み取り側をpoll()リストに追加して、最初のイベントにします。

ポーリングをキャンセルしたい場合は、パイプに文字を書き込むpoll()と返されます。インデックス 0 を持つため、内部イベントであることがわかります。

さまざまな値をパイプに渡すことで、これを大雑把なメッセージング システムにすることもできます。

手動イベントを使用して、Windows コードで同じことを行うことができます。

まさにそれを行うこのIoEventクラスを参照してください。

于 2013-10-02T08:52:43.867 に答える