非重叠串行端口连接是否在读取期间阻止写入(反之亦然)?

时间:2012-09-12 12:19:10

标签: c++ serial-port

使用CreateFile打开串行端口连接时(在Windows平台上使用C ++),您可以选择将其打开为重叠或非重叠。

如果作为非重叠的ReadFile打开,或者WriteFile调用被阻止,即它在准备好之前不会返回。

我的问题是,这些函数调用是否在单独的线程中执行时相互阻塞。如果一个线程执行了ReadFile,那么另一个线程是否能够在完成所有读取之前执行WriteFile?

1 个答案:

答案 0 :(得分:0)

是的,他们这样做。来自MSDN:

“如果一个线程被阻塞等待其I / O操作完成,则随后调用通信API的所有其他线程将被阻塞,直到原始操作完成。例如,如果一个线程正在等待ReadFile函数返回,发出WriteFile函数的任何其他线程都将被阻止。“

http://msdn.microsoft.com/en-us/library/ff802693.aspx#serial_topic4