Linux で。
キーが押されたときに機能を有効/無効にするオートクリッカーを構築したいと考えています。明らかに、並行して実行されている 2 つのものが必要です (クリッカー自体と、有効化/無効化機能)。
各実装の短所と長所は何ですか: 自動クリック機能を処理するスレッドと別のメイン スレッド (有効化/無効化など) を使用するか、syscall 選択を使用して入力/キーボードを待ちますか?
Linux で。
キーが押されたときに機能を有効/無効にするオートクリッカーを構築したいと考えています。明らかに、並行して実行されている 2 つのものが必要です (クリッカー自体と、有効化/無効化機能)。
各実装の短所と長所は何ですか: 自動クリック機能を処理するスレッドと別のメイン スレッド (有効化/無効化など) を使用するか、syscall 選択を使用して入力/キーボードを待ちますか?
を使用するselect
と、特に何百もの同時操作が可能になる可能性がある場合に、パフォーマンスが向上します。ただし、コードを正しく記述するのは難しい場合があり、コーディング スタイルは従来のシングル スレッド プログラミングとは大きく異なります。たとえば、アプリケーション全体をブロックする可能性があるため、ブロッキング メソッドの呼び出しを避ける必要があります。
ほとんどの人は、コードの大部分が通常のシングル スレッド コードに似ているため、スレッドを使用する方が簡単だと感じています。唯一の困難な部分は、ミューテックスまたはその他の同期メカニズムを介したスレッド間通信が必要ないくつかの場所です。
あなたの特定のケースでは、少数のスレッドしか必要ないように思われるので、スレッドを使用したより単純なプログラミング モデルを使用します。
あなたがしている仕事の量を考えると、それはおそらく問題ではありません。
高性能アプリケーションの場合、違いがあります。このような場合、数千の接続を同時に処理する必要があります。このような場合、新しい接続を新しいスレッドに渡します。
数千のスレッドを作成するとコストがかかるため、効率のために選択が使用されます。kqueue
実際には、またはなどのさまざまな手法epoll
が最適な切り替えに使用されます。
スレッドを作成するのは 1 回だけで、アプリケーションの存続期間中はちょうど 2 つのスレッドを実行する可能性が高いため、それは問題ではないと言います。