gpt4 book ai didi

c++ - 从控制台线程读取或获取命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:39 26 4
gpt4 key购买 nike

我有一个 C++ 程序,其中有多个线程。我希望其中一个线程能够从控制台读取/获取命令,而其他线程继续运行,例如:“播放”、“停止”、“暂停”...

类似于:

while (1)
{

std::string str;
getline(std::cin, str);

/* do something */

}

它会起作用吗?有什么建议吗?

提前致谢。

最佳答案

简短的回答:是的。

长答案:这取决于您所说的“工作”,没有什么可以阻止您在其他线程运行时从一个线程调用阻塞函数/方法。

但是,线程共享内存和资源。在 UNIX 机器上(在 Windows 上大致相同),stdin 和 stdout 在线程之间共享。 std::cin 会在某个时候在幕后操作 stdin,您应该确保一次只有一个线程可以操作给定的资源

您可以通过确保只有一个线程可以使用 std::cin 访问代码,或者使用带有互斥量/信号量的同步来实现这一点。

关于c++ - 从控制台线程读取或获取命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com