0

私のプロジェクトには、非同期性を処理する必要がある場所がいくつかあります。だから、Cで非同期性を実装する方法を学びたい.

4

1 に答える 1

0

私は「昔」に非同期プログラミングを行ったことがあります。

私が使用したアプローチは、各非同期操作を として表しHANDLE、操作に固有の がない場合は手動リセット イベントを使用することでしたHANDLEWaitForMultipleObjects次に、基本的に完了コールバックを呼び出して実行するだけのアプリケーション用のメイン ループを 1 つ作成しました。

このアプローチにはいくつかの問題があります。

  • これは非常にリソース集約的です。手動リセット イベント ラッパーがかなり必要です。
  • 厳密にシングルスレッドです。ただし、スレッド プールを利用するようにアプローチを変更できます。「昔」に非同期プログラムを開発したとき、OS はまだスレッド プールを提供していませんでした。
  • 64 個の未処理の非同期操作に制限されています。私はこの制限に遭遇し、それを回避するために「イベント デマルチプレクサ」と呼ばれるものを書きました。基本的に、必要に応じてスレッドを追加するだけです。子スレッドHANDLEは、常にHANDLEメイン スレッドが待機する 64 秒の「通知」を共有します。
于 2012-05-05T01:01:14.127 に答える