質問

私はC#で、非ブロッキングソケットを使用して、いくつかのソケットプログラミングを作るしようとしています。 このようとして私が見つけた様々なサンプル、このには、ように見えます(真)whileループを使用するが、このアプローチは100%で破裂するようにCPUを引き起こします。 イベントのプログラミングスタイルを使用して、非ブロッキングソケットを使用する方法はありますか? おかげ

他のヒント

データが置かthread.sleep(100)以下を受け取っていない場合、

、重いwhileループでCPUの問題を回避するには。それは他のプロセスがそのタスクを実行するために変更できます。

一般的に適用可能なIOを、非ブロック/ブロックについて、一般的に話します:

重要なのは、実際の生活の中であなたのプログラムがないことであるの他の事のIOをしていないながら。例はすべて、このように工夫されています。

IOをブロックでは、あなたのスレッドのブロックは、 "IOを待っている間に。 OSは、例えば、他のことを行くとい他のスレッドが実行できるようになります。だからあなたのアプリケーションは多くのスレッドを使用して並列に多くのことを(概念的に)行うことができます。

IOが可能であり、そうでない場合は行くと何かを行いますかどうかを確認するために、あなたのスレッドのクエリをIOを非ブロックで。だから、明示的で並列に多くのことを行う - アプリケーションレベルで - それらの間で交換する。

Socket.BeginReceiveとAsyncCallback

scroll top