1

在两点代码之间,我是否可以判断该进程是否已被内核抢占,或者更确切地说,当时是否有任何其他代码在同一处理器上运行?

//Point A
some_type capture = some_capture();
.
.
.
//Point B
if( interrupted( capture ) )

是否有任何我可以读取的系统调用,或者最好是我可以读取的用户空间变量,它可以实现some_captureand interrupted

我正在尝试改进我的一些基准测试代码,并希望排除此类示例。通常我可以使用 FIFO 线程,但在某些情况下我不能。一般来说,我正在计时的事情比时间片要少,而且往往不会阻塞,因此对它们何时进行的任何测量都不是对隔离功能时间的准确测量。

4

1 回答 1

0

我不认为你可以这样做,但是你可以打电话sched_setscheduler()给你的进程SCHED_FIFO调度策略和一个合适的(非零)优先级。这使它成为一个实时任务,除非被另一个更高优先级的实时任务(其中可能没有),否则不能被中断。

于 2012-04-27T06:47:26.523 回答