我使用d编程语言编写了一个小的opengl程序。我想要做的是允许程序从控制台读取输入。我试过使用readf(),getc()和其他一些函数。但我的问题是我不希望程序在寻找输入时暂停。
我试图寻找解决方案但找不到任何解决方案。所以,如果有人知道如何检查控制台中是否有实际写入的东西,如果有的话,请阅读。或者如果存在从控制台读取的任何函数,但如果没有任何函数被写入则将被忽略。
我主要想知道如何在d中做到这一点,但c ++的解决方案也很有用。
答案 0 :(得分:3)
您需要使用单独的线程。这样的事情是在D中实现它的一种方式:
import std.stdio, std.concurrency;
void main()
{
// Spawn a reader thread to do non-blocking reading.
auto reader = spawn(()
{
// Read console input (blocking).
auto str = readln();
// Receive the main thread's TID and reply with the string we read.
receive((Tid main) { send(main, str); });
});
// ... This is where you can do work while the other thread waits for console input ...
// Let the reader thread know the main thread's TID so it can respond.
send(reader, thisTid);
// Receive back the input string.
receive((string str) { writeln("Got string: ", str); });
}
这会生成一个单独的线程,当主线程可以执行其他工作时,它会使控制台输入等待。