如何在 Linux 下的 C/C++ 中设置计时器的亲和力?

How to set affinity for a timer in C/C++ under Linux?

我用函数 timer_create(CLOCK_REALTIME, &events, &timer) 创建了计时器,其中计时器是每个进程计时器 ID 的唯一(根据 man)。

现在有 sched_setaffinity 函数可以为给定的 PID 设置关联。

如何为我的计时器设置亲和力? 不是整个程序,只是计时器线程。我不确定计时器 ID 是否与 PID 相同。

好的,我得到了答案。

一种方法是这样的:

  1. 使用 pthread 创建一个新线程。
  2. 为此新线程设置亲和力。
  3. 在新线程的入口例程中,初始化定时器(create and set)。我们可以使用 SIGEV_THREAD 因为它使用起来很方便。
  4. POSIX 计时器线程,以及计时器溢出时创建的线程,将从我们在步骤 1 中创建的线程继承关联性。
  5. 将步骤 1 中的线程加入主线程。该线程将不复存在,但它的子线程(计时器)将继续存在。