- 27 名前:デフォルトの名無しさん mailto:sage [2016/09/29(木) 07:51:10.72 ID:a430Zm1B.net]
- この流れは俺が悪いのかな?
目的はある意味投機実行ならぬ投機読み込みだよね? でもって読み込みが終わったらコルーチン遷移だろうと完了待ちブロッキングの関数バインドだろうと 他のWin32のスレッドか完全な別ステート(コンテキスト)のLuaスクリプトでReadFileだろうと ReadFileExのコールバックルーチンを使おうと必ず全く別のWin32スレッドが必要になる筈なんだけど いやむしろコルーチンで全部済む方法があったら是非教えてくだちい(皮肉じゃないよ、結構必死) ちな俺が作ってたのはシナリオインタープリタに例えると、今実行中のステートとは 完全に独立した複数のステートで選択肢の1つ先の全選択肢を入出力ダミーにして投機実行して 全部DISCARDABLEなグローバルヒープに持っとく為に複数ファイルをグローバルなユーザデータの m_ctxlistに放り込んでFILE_FLAG_OVERLAPPEDで勝手に全部読み込みにいくって感じの代物 デストラクタでGetOverlappedResultできないのは選択肢決定が早かった時にそこで待っちゃうと 本来の読み込み要求(これも排他を待たなきゃいけない)と重なって更に待たされる可能性があるから でもってどんなエラーが起きてもおいそれとOVERLAPPED構造体は破棄しちゃいけない 最悪メモリリークを選んで他のヒープの開放にいかなきゃいけない だって、開放したらしたでアクセス違反で他の後始末する前に即ぶっ飛ぶのが目に見えてんだから 単純な決め打ちの非同期入出力なら何とか簡単にできるかも知れんけど、 突っ込んだ事しようとすると頭うにる
|

|