コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2005年11月11日 >>> 2005年11月11日
link もっと後

2005年11月11日

たまには読まれもしない長文を書いてみようかなーっとぉ!(直ってない)

JoyToKeyもどきでは、デバイスを1ms間隔でポーリングしています。そのためには1ms経つまで帰ってこない関数が必要になります。現在の実装ではSleepとtimeBeginPeriodを使って(※)います。なぜなら、負荷が低い状態ならばSleep(1); はほぼ1[ms] で帰ってくるし、これによりCPUをアイドル状態にでき、電気代の節約にもなるためです。一石二鳥なのです。
しかしこのソフトを使うときはゲームしていることが多いため、ゲーム側で高い負荷がかかる事があります。高負荷時にはSleep(n); はn[ms] では帰りません。高負荷時にはSleep(1); が10msとか20ms後に帰ってくることもザラです。

Sleepとは現在このスレッドは暇だから、指定した時間が「過ぎるまで」他のスレッドにCPU時間を譲りますよ、とOSに教える事です。そのため自分以外に高い負荷がかかるスレッド(つまりゲーム)がいれば、Sleepを呼んだスレッドに制御を戻すのを遅らせてでも、高負荷のスレッドにCPU時間を割り当てるのは当然の動きです。低負荷ならばSleep(n); がn[ms] で帰ってくる傾向がある、というだけで常にSleep(n); がn[ms] で帰ってくることは誰も保証していないのです。
Sleepを嫌うとビジーウェイト(時間がたつまでループして待つ)ことになりますが、JoyToKeyもどきがCPU 100%食うようなアプリケーションだと嫌ですよね?…どうでもいい?チッ、皆が良くても俺は嫌なんです。

これは今作っているアプリケーションに限った問題ではなく、数msごと処理を実行するという部分があれば必ず出る問題です。ビジーウェイトなしに正確な時間待つ関数を作れれば、有用だと考えます。
現在考えているのは、低負荷時にはSleepを使い、高負荷時にはビジーウェイトに切り替える関数です。予想される弱点としては、低負荷時にSleepを使って待つため一時的に高負荷になるとSleepがデッドラインを超えてしまう可能性があることです。ゲームに用いると一時的な負荷で激しく処理落ちする欠陥と言われそうですが、JoyToKeyもどきには妥当な落としどころでしょう。実装できたらまた書きます。誰もここまで読んでないだろうけど、次回をお楽しみに。
※WindowsはtimeBeginPeriod(1); を呼ぶとなぜかSleepの分解能も変わります。この副作用は昔からあるようです。とりあえず呼んどけ。

編集者:すずき(2006/11/19 16:16)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2005年11月11日 >>> 2005年11月11日
link もっと後

管理用メニュー

link 記事を新規作成

<2005>
<<<11>>>
--12345
6789101112
13141516171819
20212223242526
27282930---

最近のコメント5件

  • link 24年4月22日
    hdkさん (04/24 08:36)
    「うちのHHFZ4310は15年突破しまし...」
  • link 24年4月22日
    すずきさん (04/24 00:37)
    「ちゃんと数えてないですけど蛍光管が10年...」
  • link 24年4月22日
    hdkさん (04/23 20:52)
    「おお... うちのHHFZ4310より後...」
  • link 20年6月19日
    すずきさん (04/06 22:54)
    「ディレクトリを予め作成しておけば良いです...」
  • link 20年6月19日
    斎藤さん (04/06 16:25)
    「「Preferencesというメニューか...」

最近の記事3件

  • link 24年4月25日
    すずき (04/26 16:49)
    「[AVIFの変換] AVIFが読めないアプリケーションがたまにあるので、AVIF(AV1 Image File Format)...」
  • link 24年2月7日
    すずき (04/24 02:52)
    「[複数の音声ファイルのラウドネスを統一したい] PCやデジタル音楽プレーヤーで音楽を聞いていると、曲によって音量の大小が激しく...」
  • link 24年4月22日
    すずき (04/23 20:13)
    「[仕事部屋の照明が壊れた] いきなり仕事部屋のシーリングライトが消えました。蛍光管の寿命にしては去年(2022年10月19日の...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 04/26 16:49