我們有一個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