プロセスをミリ秒単位で停止する方法をsleep,usleep,nanosleepを用いる方法以外で教えてください.

プラットホームはLinuxです.

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/10/31 19:44:36
  • 終了:2008/11/07 19:45:03

回答(2件)

id:zzz_1980 No.1

zzz_1980回答回数492ベストアンサー獲得回数642008/10/31 20:03:14

ポイント35pt

Debian etch + Linux-2.6.18 (i386)ベースで

pthread_cond_wait()で待っているスレッドに対して、割り込みスレッドからpthread_cond_signal()で signal を投げる、

という実装例です。

http://kenmemo.blogspot.com/2007/01/linux-real-time-timer.html

id:RC30-popo No.2

POPO回答回数345ベストアンサー獲得回数132008/11/01 01:34:52

ポイント35pt

selectシステムコールで書けます

1msec寝かせたければ。

struct timeval tv;

tv.tv_sec = 0;

tv.tv_usec = 1000;

select(0, NULL, NULL, NULL, &tv);

下記を参照してください。

http://www.linux.or.jp/JM/html/LDP_man-pages/man2/select_tut.2.h...

ただし他のプロセスも同時に動作している状態では正確に1msで起きるかはわかりません。

(最低1ms以上寝ると考えるべき)

なるべく正確に1ms精度で起こしたければ、sched_setschduler()でリアルタイム

スケジューリングに設定する必要があるかもしれません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません