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内核
其他一些观察结果:
sudo ./a.out SCHED_FIFO
,则输出逐行打印,每秒一行。这就是我的预期。strace -fp <PID>
关闭除第一个以外的所有CPU并删除/sys/devices/system/cpu/cpuX/online
来电,则一切正常。第三种现象让我感到惊讶。 AFAIK sched_setaffinity
使用strace
。为什么ptrace()
它使一切正常?