static SerialPort port = new SerialPort("COM3", 57600, Parity.None, 8, StopBits.One);
thread1()
{
lock(port)
for(;;)
port.write"Hi 1";
}
thread2()
{
lock(port)
for(;;)
port.write"Hi 2"
}
输出:(在超级终端中)
Hi 1
Hi 1
Hi 1
这里因为thread1被锁定并且处于无限循环中,所以它根本不会出现在thread1中..但我需要thread1和thread2同时打印..请帮帮我。
感谢。
答案 0 :(得分:2)
如果他们使用相同的端口,他们无法同时打印 ...但可能意味着:
void Thread1()
{
for(;;)
{
lock (port)
{
port.Write("Hi 1");
}
}
}
void Thread2()
{
for(;;)
{
lock (port)
{
port.Write("Hi 2");
}
}
}
这里我们只在写入期间获取锁定 - 所以在我们发布它之后,有另一个线程可以进入并获取锁定。
但有两点:
SerialPort
中的其他代码可能会锁定其监视器。