【发布时间】:2013-03-13 16:01:16
【问题描述】:
在 Free-Pascal 中,我将创建一个跨平台控制台程序,它将在一堆线程 (TThread) 中完成大部分工作。
主程序仅用于不时接收一些用户命令并执行这些命令(并保持整个程序运行)。
这个循环作为程序的主循环在 Windows 和 Linux 上都能完美运行,无需使用 cpu:
repeat
Write('> ');
ReadLn(s);
// execute command
until s='exit';
但是我需要线程来命令主程序做一些工作。这意味着我需要一种方法来阻止另一个线程的 ReadLn 继续并检查命令标志。如果我能以某种方式发送一个 Enter 键来欺骗 ReadLn 结束它会很好。
是否有其他方法可以创建一个跨平台主循环,该循环侦听用户字符串或按键,同时可以从其他线程命令?
【问题讨论】:
-
为什么线程不能工作?
-
-
我们明白了,但是如果有工作要做,为什么'主程序'必须做呢?为什么线程做不到?
-
评论 #2 是针对已消失的 Q。线程可能会完成这项工作,但其中一项工作需要向控制台写入大量状态,同时不需要用户输入。所以无论如何都需要中断 ReadLn。
标签: multithreading console-application pascal freepascal