- PR -

ThreadのSuspendおよびResume (C#)

投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2004-05-20 02:08
ご返答ありがとうございます。

1.タイマーそのものの優先度を上げる方法
  タイマーそのものの優先度を上げる方法が分からないので困っています。
  (やはり方法が無いのでしょうか?)
  優先度を上げてもタイムスライスが細かくならないので、効果が薄いかも
  知れませんが…。

2.sleep待機時間を計算し、自動補正する。
  これについては既に実験しています。確かに微弱なタイマーの遅延については
  よく補正してくれるので、安定します。しかし、CPU負荷が大きく変動する
  と、タイマーの安定性がむしろ損なわれてしまったので結局採用しませんでした。

3.ディスクアクセス
  一応、別スレッド+非同期IOとバッファの調整でIO負荷の平準化を試みては
  います。

4.デバイスドライバー
  デバイスドライバーとして動作させることで、1秒間に60回感覚でも
  を安定して受け付けることができるのでしょうか?
  そのようなプログラミングは難しいのでしょうか?
  (Windowsではデバイスドライバーを作成したことがありません)
ぴんぴん
大ベテラン
会議室デビュー日: 2004/05/07
投稿数: 141
投稿日時: 2004-05-20 03:37
Sleepでもだめということだと、前に出ていたSleep+イベントみたいな解もだめですね。

デバイスドライバは、まあ一番リアルタイムでやりやすい方法ではあると思います。
割り込みソースは必要でしょうが。
あと、あまり重たいことや複雑なことは出来ないと思いますけれど。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2004-05-20 21:01
引用:

1.タイマーそのものの優先度を上げる方法
(略)
2.sleep待機時間を計算し、自動補正する。



Sleep() や Suspend()/Resume() の方が性能が出てます?

スレッドの実行優先度を高くしておいて、同期オブジェクトがシグナルになるのを待ち合わせるのが、ユーザコードでは最も反応が良いと思うんですが。。。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/

スキルアップ/キャリアアップ(JOB@IT)