2011-10-21 29 views
2

コールバック機能が終了すると非同期タイマーを使用して起動します。私はマイクロ秒で精度を求めています。 私のコードの流れは次のようになります。.. Linuxの非同期タイマー

timer_t tid; 
struct itimerspec val; 

val.it_value.tv_sec = 0; 
val.it_value.tv_nsec = 100000; 

value.it_interval.tv_sec = 0; 
value.it_interval.tv_nsec = 100000; 

timer_create (CLOCK_REALTIME, NULL, &tid); 
timer_connect (tid, myfunc,0); 
timer_settime (tid, 0, &val, NULL); 



and write my handle function: 

myfunc(){ 
blah blah blah... 
} 

私はtimer_connectは、最近のLinuxバージョンで使用されていないと思う..私は選択肢を持っていますか?

おかげで、

答えて

4

は確かtimer_connect最近のLinuxバージョンに存在しません。実際には、私はそれが最近のLinuxのバージョンにも存在しないと確信しています。何人かのグーグルが、VxWorksにある何かを示唆している。それはPOSIX、FWIWのいずれにも見られません。

Linux(およびPOSIX)では、struct sigeventへのポインタをtimer_create()の2番目の引数(例ではNULL)に指定できます。 struct sigeventには、名前が示すように、タイマーが期限切れになったときに呼び出す関数(これは通知メソッドがSIGEV_THREADであることが必要です)であるメンバ(* sigev_notify_function)があります。

+0

私は同じことを試していましたが、何か別の選択肢があると思っていました。情報@Jannebに感謝します。これを試して、あなたに戻ってください – coolcracker

+0

信号を使わずにAyncronousタイマーを実装する方法はありますか? – coolcracker

+0

SIGEV_SIGNALを通知メソッドとして使用しないかぎり、または* evp引き数をtimer_createにNULLのままにしておきます。 – janneb