オーバーラップ I/Oか別スレッドで読み込むか

公開:2011-08-30 20:58
更新:2020-02-15 04:36
カテゴリ:wasapi,c++,dawもどきの作成,windows,audio,windows api

非同期でファイルを読み込む方法はWindowsではオーバーラップI/Oを使うか、読み込み自体を別スレッドで行うかすればよいだろう。今回はオーバーラップI/Oを使って実装してみたいと思い色々調べているうちにオーバーラップI/Oって今回の要件では使えないのではないかという気がしてきた。

別スレッドにして通常のI/O(ブロッキング)で少しずつReadして行くほうがコントロールしやすいのではないかと。

今回考えているのはファイルを少しずつ読み込みキューやリングバッファなどに貯めるスレッドを起動し、それを後追いするスレッド(再生スレッド)がバッファからデータを取り出しWASAPIに送る。なのでファイル読み込みと再生が別スレッドとなるので、オーバーラップI/Oを使う意味はあまりないのかなと。ファイル読み込みスレッドは読み込み以外の仕事をすることもないので、読み込みが終わるまで待っていても良いしね。

しかし技術的な興味はあるのでオーバーラップI/Oは引き続き調べていく事にする。