【发布时间】:2013-03-27 09:52:18
【问题描述】:
在 Windows 中从命令行运行程序时,如果进入标记模式,则程序输出会暂停,让您有足够的时间复制所需内容,然后继续执行程序。
我一直认为这只是暂停了输出流,并且程序无论如何都继续落后。但是,我发现它似乎也“暂停”了程序(或至少阻止它通过套接字进行通信)。
我的问题是:这种“暂停”实际上意味着什么?哪些线程被挂起?子进程是否暂停(我猜不是)?例如,如果运行 Java 代码,是整个 JVM 暂停,还是只是主线程? Windows 是如何处理这个问题的?
如果这个问题可能有点开放式的问题,我深表歉意,但在开启快速编辑模式后,我想知道关键程序有什么风险!
提前致谢
【问题讨论】:
-
您确定通过套接字进行通信的线程没有也尝试写入控制台吗?
-
所有的日志记录都是用 NLog 处理的,在有问题的程序中没有任何直接的控制台访问。假设 Nlog 在单独的线程上运行,那么这应该会影响它。
-
听起来这是您应该验证的假设。我会尝试编写一个简短但完整的程序来演示这个问题......
标签: windows multithreading jvm cmd