2

私はwinapi ReadFileExを使用して30メガバイトの配列を非同期にロードしましたが、それは完全にうまく機能します-私は無料ですべての読み取りを取得しました.計算の速度低下はありません.配列は魔法のようにバックグラウンドでロードされ、ゲームフレームの速度低下はありません(ただし、1つのコアを使用しますコンピューター)

しかし、質問はそのようなものです-「読み取り終了」呼び出しを受け取ることがわかっている限り、スレッドをスリープ状態にする必要があります。それをしたくありません。メインスレッドから load_asyncronusly を起動しただけで、いつ終了したかを知りたいです(今ではすべてのロードがこのように機能し、終了時にコールバック呼び出しを受け取らないだけです)

ロードされた配列の内容を時間内にテストし、たとえば「これが上書きされているかどうかを確認する」という最後のバイトが上書きされているかどうかを確認できますが、これはおそらくそれほど安全ではありません(?)いつ終了したかを判断する方法はありますか?それに近い簡単な方法で?

4

1 に答える 1

3

いくつかのオプションがあります:

  1. GetOverlappedResult操作が完了したかどうかを非同期的にテストするために呼び出します。
  2. を渡しますFileIOCompletionRoutine。これは、読み取りが完了すると実行されます。
  3. 構造体でイベントを使用しOVERLAPPEDます。これは、読み取りが完了すると通知されます。
于 2013-03-31T09:20:57.423 に答える