你认为在Linux系统中延迟50毫秒是正常的吗?
我有一个有很多线程的程序,一个线程用马达和光电池控制物体的运动。
我做了很多事情,以获得最小的延迟,但总是得到50毫秒,这会导致一个位置错误的对象。
我所做的事情:-不错的功能到-20 -线程优先级的光电控制线程: SCHED FIFO,99 -内核配置: CONFING_PREEMPT=y - mlockall (MCL_CURRENT \ MCL_FUTURE);
很多时候,我失去了50毫秒等待一个光电池。我认为问题不是我的另一个线程,而是内核中的进程。
可定位是否减少了这个延迟?知道谁能得到这50毫秒的额外信息吗?
控制光电池的线程产生许多“读取”功能。这会产生问题吗?
/**********/
现在的情况是:只有一个线程运行一个无限空的循环,只在循环结束时寻找开始的时间。没有对磁盘的访问,没有对GPIO的访问,没有串口,什么都没有。这个循环花了50毫秒的时间。
我没有设置cpuaffinity,我的处理器只有一个核。
发布于 2014-01-22 11:47:42
我一直在我的程序中做测试。这是主函数中的代码,在程序显示线程之前,这会导致de50mseg延迟:
struct sched_param lsPrio;
lsPrio.sched_priority = 1;
if (sched_setscheduler (0, SCHED_FIFO, &lsPrio) != 0)
printf ("FALLO sched_set\n");如果我注释这一行,延迟将减少约1 mseg。
为什么这一行会导致延迟?
https://stackoverflow.com/questions/21246497
复制相似问题