SCHED_FIFO + sched_setaffinity =控制台无法正常工作?

时间:2015-11-08 05:43:56

标签: linux multithreading

PS。这实际上是一个家庭作业问题。

我有一个程序。主线程创建两个子线程。所有线程都指定为SCHED_FIFO类。另外,我使用sched_setaffinity来确保线程确实是FIFO。 (否则两个线程在不同的核上运行,因此看起来是交错的)但是,输出似乎不是每秒一行。所有行都在执行结束时打印。如何每秒打印一行?

源代码:https://gist.github.com/yan12125/b15b7ded2184aad2fb37

编译:{{1​​}}

使用:gcc rts2015.c -pthread

运行

测试:Arch Linux x86_64,内核4.3,Intel i5 4内核

其他一些观察结果:

  • stdin也不起作用。
  • 所有其他应用程序照常运行
  • 如果我运行sudo ./a.out SCHED_FIFO,则输出逐行打印,每秒一行。这就是我的预期。
  • 如果我通过strace -fp <PID>关闭除第一个以外的所有CPU并删除/sys/devices/system/cpu/cpuX/online来电,则一切正常。

第三种现象让我感到惊讶。 AFAIK sched_setaffinity使用strace。为什么ptrace()它使一切正常?

0 个答案:

没有答案