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

时间:2012-04-15 13:11:08

标签: c# multithreading serial-port collision

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

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


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

1 个答案:

答案 0 :(得分:0)

msdn文档告诉:

“线程安全 此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。“ - 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);
    }
}