07/03/07 21:43:02 DvFrCz1t
>>24
>空き時間をポーリングでつぶさないで他のスレッドにCPUを渡す、って感じ。
そうなんだ。制御系だとハードウェア割り込み(タイマ割り込み)が使えたりするから
これをトリガーにして定期的にフラグチェックとか色々できたりするんだけどね。この場合
ポーリング(スリープ&フラグチェックのループ)のためのスレッド生成も不要だったりする。
コンシューマって結構違うんだね。
ちなみにミドルウェアを使う場合はハードウェア割り込みは隠蔽されちゃうんだけど
アプリ側でコールバック関数(フラグチェック関数)を登録するような形で同様の
サービスを受けられる場合が多いよ。
あと、ポーリング(スリープ&フラグチェックのループ)の待ちぼうけの時間が惜しいから
スレッドを分けてるんだよね。それも結局は「1フレームで処理を終わらせるため」の
最適化目的だと思うんだ。PCの場合もDirectXの中に糞重いメソッドがあって待ちぼうけ
食らったりするけど、気長に待ってても処理時間は余裕で余ったりする。それと
DirectX使う場合はdllが別スレッドで走ってるので、待ちぼうけ食らいそうな描画メソッドとかは
ドライバ内部のコマンドキューに突っ込んですぐに処理を返してくれたりする。
アプリ側コードがしょぼいシングルスレッドでも、DirectXが何とかしてくれてる。