RT,假如我有如下的一段代码:
std::queue<int> q;
volatile bool isRunning = false;
void input()
{
while (isRunning)
{
int n;
std::cin >> n;
q.push(n);
}
}
int main()
{
isRunning = true;
std::thread thrInput(input);
while (isRunning)
{
if (!q.empty())
{
int cur = q.front();
q.pop();
std::cout << "Number = " << cur << std::endl;
if (q == -1)
{
std::cout << "Preparing to quit..." << std::endl;
isRunning = false;
break;
}
}
}
if (thrInput.joinable())
thrInput.join();
return 0;
}
我想在我输入 -1 的时候结束程序。但是当我输入 -1 之后子线程(就是那个 thrInput)卡在输入那里,导致主程序中循环停止后一直无法 join,只能再输入一个什么东西才行……目前的解决方案是在输入处也判断一下若是 -1 则退出。
想问下是否有另外的一种更“好”的解决方案(就是输入管输入,处理管处理之类的)?昨天已经调了一晚上了/tuu