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

|