私のコードでいくつかのタイマーを使用する必要があります。LinuxタイマーCLOCK_PROCESS_CPU_IDが機能しません
#define SECOND 1000000000
cは2.25
のようなもので、私の問題は、次のとおりです。c_threadは新しいタイマーを設定しているいくつかの単純な関数である
struct sigevent ec;
ec.sigev_notify = SIGEV_THREAD;
ec.sigev_value.sival_ptr = &c_timer;
ec.sigev_notify_function = c_thread;
ec.sigev_notify_attributes = NULL;
secs = floor(c);
nsecs = (long long) SECOND * (c - secs);
printf("%ds\t%lldns\n\n",secs,nsecs);
it1c.it_value.tv_sec = secs;
it1c.it_value.tv_nsec = nsecs;
it1c.it_interval.tv_sec = 0;
it1c.it_interval.tv_nsec = 0;
timer_create(CLOCK_PROCESS_CPUTIME_ID, &ec, &c_timer);
timer_settime(c_timer, 0, &it1c, NULL);
、SECONDがある:私はこのような何かを持っていますこのタイマーは、必要なときにc_threadを呼び出さないことを指定します。 CLOCK_PROCESS_CPUTIME_IDをCLOCK_REALTIMEに変更すると、すべてが正常で、呼び出されますが、最初に何も起こりません。また、clock_gettime関数で他のCLOCK_REALTIMEタイマーを使用してCLOCK_PROCESS_CPUTIME_IDをチェックしています。クロックの値がmy it_valueに達しています。
何が間違っている可能性がありますか?
私の2番目の質問:タイマーを使ってスレッドと呼ばれる関数に引数を渡す方法はありますか?
[MCVE]を付けてください。 'CPUTIME'はプロセスが消費するCPU時間を示します(明白です)。プログラムが無期限にスリープ状態になると、CPU時間が2.5秒に達することはありません。だから、タイマーを設定した後にプログラムが何をするのかを知る必要がある。 – kaylum