我使用 d 编程语言制作了一个小型 opengl 程序。我想做的是让程序从控制台读取输入。我曾尝试使用 readf()、getc() 和其他一些函数。但我的问题是我不希望程序在寻找输入时暂停。
我试图四处寻找解决方案,但找不到任何解决方案。所以如果有人知道如何检查控制台中是否真的写了一些东西,如果是的话,请阅读。或者如果存在从控制台读取的任何函数,但如果没有写入任何内容,则将被忽略。
我主要想知道如何在 d 中执行此操作,但 c++ 的解决方案也可能有用。
您需要使用单独的线程。像这样的事情是在 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); });
}
这会产生一个单独的线程,它会等待控制台输入,而您的主线程可以做其他工作。