从控制台线程读取或获取命令
Reading or getting a command from console thread
我有一个c++程序,里面有几个线程。我希望其中一个线程能够从控制台读取/获取命令,而其他线程继续运行,例如:"播放","停止","暂停",…
类似:
while (1)
{
std::string str;
getline(std::cin, str);
/* do something */
}
它会工作吗?有什么建议吗?
简短回答:是的。
长篇大论:这取决于你如何称呼"工作",当其他线程正在运行时,没有什么可以阻止你从一个线程调用阻塞函数/方法。
然而,线程共享内存和资源。在UNIX机器上(在Windows上也差不多),标准输入和标准输出在线程之间是共享的。在某些情况下,std::cin将在底层操作stdin,您应该确保一次只有一个线程可以操作给定的资源。您可以通过使用std::cin来确保只有一个线程可以访问代码,或者使用互斥锁/信号量来使用同步。
相关文章:
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 数组长度,为什么从命令行获取时不能使用它?
- 使用提升过程获取 shell 命令的标准输出
- 在客户端和备忘录中获取 HTTP 命令
- 在 c++ 中从执行的 shell 命令获取返回状态的安全方法是什么?
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- 通过命令行参数获取llvm ir文件时面临问题
- 获取使用p4api运行的Perforce命令的输出
- 从命令行获取参数时出现问题
- 在 C 中获取背景外壳命令的 PID
- 应用程序无法获取命令参数
- 获取命令行请求的结果并打开文件
- 如何使用数组获取命令行参数
- db耿-获取命令的输出,而不是通过回调
- 从控制台线程读取或获取命令
- 按照visual studio中的定义获取命令结果
- 尝试获取命令行参数的核心转储.(C++)
- 如何告诉我的程序在等待从用户那里获取命令时执行某些操作
- 获取命令行参数
- 获取命令行参数的大小/访问命令行参数中的单个字符