0

完了ポートを使用して別のスレッドから情報を取得したい場合は、

プログラムの構造をどのように設計できますか?以下のものはどうですか?

グローバル関数を使用したい場合、ミューテックスを設定するにはどうすればよいですか?

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreatThread(ThreadFun)
  }
}

ThreadFun(){

    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
      Start another file operation();
    }

}
4

2 に答える 2

0

Push Framework、http: //www.pushframework.comもこの設計を使用していますが、着信接続を受け入れるための別のスレッドが追加されています。

于 2010-07-20T10:10:57.197 に答える
0

この解決策を試してください:

Main(){
  for i in range NumOfThreads{
    CreateIoCompletionPort() 
    CreateThread(ThreadFun)
  }

  for i in range NumOfCallerThreads
    CreateThread(ThreadCaller)
}

ThreadCaller(){
  While(1){
    Start another file operation();
  }
}


ThreadFun(){
    While(1){
      GetQueuedCompletionStatus(); // wait for completion of an IO
      Process What ever has completed ();
    }
}

クリティカル セクションなしで実行できます。必要なのは、「別のファイル操作を開始する();」という保証だけです。対応する IOCP を閉じた後は呼び出されません。

于 2009-07-21T12:27:39.230 に答える