Console 从控制台读取而不暂停程序
我用d编程语言编写了一个小型opengl程序。我试图做的是允许程序从控制台读取输入。我尝试过使用readf()、getc()和其他一些函数。但我的问题是我不希望程序在寻找输入时暂停 我试着四处寻找解决方案,但找不到任何解决方案。因此,如果有人知道如何检查控制台中是否确实写入了某些内容,如果是,请阅读。或者,如果存在任何从控制台读取的函数,但如果未写入任何内容,则将忽略该函数Console 从控制台读取而不暂停程序,console,d,Console,D,我用d编程语言编写了一个小型opengl程序。我试图做的是允许程序从控制台读取输入。我尝试过使用readf()、getc()和其他一些函数。但我的问题是我不希望程序在寻找输入时暂停 我试着四处寻找解决方案,但找不到任何解决方案。因此,如果有人知道如何检查控制台中是否确实写入了某些内容,如果是,请阅读。或者,如果存在任何从控制台读取的函数,但如果未写入任何内容,则将忽略该函数 我主要想知道如何在D中这样做,但是C++的解决方案也很有用。 你需要使用一个单独的线程。这是在D中实现的一种方法: imp
<>我主要想知道如何在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); });
}
这会产生一个单独的线程,当主线程可以执行其他工作时,它会执行控制台输入等待。感谢您的快速响应。我现在正在测试它。当我试图编译它时,它会抱怨concurrency.d文件中出现了一些错误,但我想这是我的设置中的一个问题。使用gdc作为编译器,它会抱怨在concurrency.d中声明枚举的方式。d“enum hasLocalAliasing=false;”(使用gdc是因为我无法让dmd处理代码块)听起来像是将gdc用于d 1.0,而不是D2.0。如果你在Ubuntu发行版上,那些repos中的GDC和LDC版本是针对D1.0的。是的,我正在使用Ubuntu。所以我可能使用的是1.0版本。我会为D2.0安装GDC,我想它会工作的,谢谢你的帮助。