使用CreateFile打开串行端口连接时(在Windows平台上使用C ++),您可以选择将其打开为重叠或非重叠。
如果作为非重叠的ReadFile打开,或者WriteFile调用被阻止,即它在准备好之前不会返回。
我的问题是,这些函数调用是否在单独的线程中执行时相互阻塞。如果一个线程执行了ReadFile,那么另一个线程是否能够在完成所有读取之前执行WriteFile?
答案 0 :(得分:0)
是的,他们这样做。来自MSDN:
“如果一个线程被阻塞等待其I / O操作完成,则随后调用通信API的所有其他线程将被阻塞,直到原始操作完成。例如,如果一个线程正在等待ReadFile函数返回,发出WriteFile函数的任何其他线程都将被阻止。“
(http://msdn.microsoft.com/en-us/library/ff802693.aspx#serial_topic4)