在我的嵌入式设备中,我使用我们使用的协议吸收了奇怪的行为,有时使用 FIFO 通过串行设备发送数据需要一段时间。
我怀疑 Linux 不是实时操作系统,为什么他们有这样的实时模拟功能,例如pthread_setschedparam?并且在队列中具有这样的优先级会导致另一个进程饿死,因为它需要花费大量时间来检测从设备。
我只想知道是否建议使用 param.sched_priority = 40; 在 Linux 中?我试图调整这个参数,但这个问题很难在现场重现。
这是代码
if (1)
{
int policy;
int r;
struct sched_param param;
policy = SCHED_FIFO;
param.sched_priority = 40;
r = pthread_setschedparam(cc_state->ser_thread, policy, ¶m);
printf("%s: pthread_setschedparam %d", __func__, r);
}