我们有一个Linux嵌入式项目,我们关心性能。对串口的限制异步输入功能?
串行端口异步输入示例在: http://www.faqs.org/docs/Linux-HOWTO/Serial-Programming-HOWTO.html#AEN105 几乎没有我们想要的。
但是,负责工程师反对CPU性能由 环路睡眠呼叫丢失。他希望程序等待一个信号来执行响应处理代码。
我试图从main()中移动该代码信号函数内部,即:
void signal_handler_IO (int status)
{
// I moved my code here
}
结果不起作用,写入该功能所作的串口很快失败,程序完全变反应迟钝。
这是为什么?
是否有人只有一个串口有一个很好的在线信号驱动I/O的例子?我一直在阅读Kerrisk的“The Linux Priogramming Interface”一书的第63章,并疯狂地搜索。我开始认为可能没有更好的方法来做最初的例子。
由于提前,
伯特
查看评论“通常我们会在这里做一些有用的事情”。不要设置非阻塞I/O,然后调用睡眠,设置非阻塞I/O,然后在该线程中执行一些有用的操作,如同所有其他功能一样,如果您希望有单线程应用程序。否则,如果你想要多线程专用一个线程来观察串行并使用阻塞I/O,那么内核将挂起线程,直到有一些事情要做。或者有一个I/O线程使用select来观看多个输入源,并且只有当其中一个输入源被输入时才被唤醒。 – 2011-02-04 17:37:53