如果两个线程写入同一个串行端口,是否会发生冲突

本文关键字:是否 串行端口 冲突 同一个 两个 线程 如果 | 更新日期: 2023-09-27 18:31:14

我正在用c#编码。如果两个线程写入同一个串行端口,是否会发生冲突?如果是,我该如何处理?另外,我想优先考虑其中一个线程。

例如,如果两个线程正在写入串行端口,那么当我从线程 2 写入数据时,我想停止线程 1 的传输(即线程 2 在写入端口时优先于线程 1)。


非常感谢您的回答。但我的一个问题仍然没有答案。一旦我从线程 1 获取要写入的数据。它应该暂停从其他线程读取/写入并传输此数据,然后继续暂停函数。

如果两个线程写入同一个串行端口,是否会发生冲突

msdn 文档说:

"线程安全此类型的任何公共静态(在 Visual Basic 中共享)成员都是线程安全的。不能保证任何实例成员都是线程安全的 http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx。

所以你需要自己让它线程安全。

例如
void thread1()
{
    lock(serialPort1)
    { 
         serialPort1.Write(something);
    }
}
void thread2()
{
    lock(serialPort1)
    { 
         serialPort1.Write(somethingelse);
    }
}