open()串行设备两次,用于在多线程上下文中进行读写

时间:2017-10-19 20:13:21

标签: c multithreading serial-port file-descriptor single-threaded

对于串行协议栈,我将实现两个线程,一个用于读取(也可能是写入)串行,另一个线程仅用于写入。

我想知道打开一次并在两个线程中使用文件描述符是否安全,或者最好打开两次,如下所示:

tx_fd = open("/dev/ttyS0", O_WRONLY);
rx_fd = open("/dev/ttyS0", O_RDONLY);

或者我应该使用不同的范例来完成单线程中的所有事情。

有哪些陷阱?

1 个答案:

答案 0 :(得分:0)

无论如何都存在“陷阱”。在单线程方法中,您可以在写入时读取,响应时间可能会有一些额外的延迟,但代码通常更简单。在多线程安排中,您可以在一个或多个线程中取得进展而其他线程被阻止,并且通常更有效地利用现代系统,但是如果任何线程必须在它们之间共享任何数据或者需要在操作之间进行同步/协调,那么你必须使用以下一个或多个;管道,队列,锁,信号量,记忆围栏等。