2017-03-21 7 views
0

私は、タイマは、timer_create(CLOCK_REALTIME, &events, &timer)という関数で作成しました。ここで、timerは、プロセスごとの固有のタイマーIDです(manによる)。LinuxのC/C++でタイマーの親和性を設定する方法は?

今や、特定のPIDに対して親和性を設定する機能がsched_setaffinityにあります。

タイマーの親和性を設定するにはどうすればよいですか?プログラム全体ではなく、タイマースレッドのみ。タイマーIDがPIDと同じであるかどうかはわかりません。

+1

誰もドキュメントをもう読んでいませんか?ここをクリックしてください:https://linux.die.net/man/2/timer_createオプションSIGEV_THREAD_IDに注意してください –

答えて

0

私は答えを得ました。これを行うには

一つの方法は、そのようなものです:

  1. は、pthreadのを使用して、新しいスレッドを作成します。
  2. この新しいスレッドの親和性を設定します。
  3. 新しいスレッドのエントリルーチンで、タイマーを初期化します(作成および設定)。私たちはSIGEV_THREADを使用すると便利です。
  4. POSIXタイマースレッドと、タイマーがオーバーフローしたときに作成されたスレッドは、手順1で作成したスレッドからアフィニティを継承します。
  5. メインスレッドとステップ1のスレッドを結合します。このスレッドは存在しなくなりますが、その子スレッド(タイマー)は保持されます。
関連する問題