ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
You can make your process explicitly relinquish its cpu time by calling sched_yield
, defined in the header file sched.h
. It just moves your process to the end of the scheduling queue for the corresponding priority.
I guess the reason why renicing the process doesn't have the expected effect is that the scheduler is only called after your thread's time is over, i.e. processes with a higher priority are called only after your thread either performs a syscall or the OS calls the scheduler through a timer interrupt. That's really just a guess though. Using sched_yield
should work, even when you don't change the priority.