怎么控制 控制台多线程 结束
如何控制 控制台多线程 结束?
在控制台下面,
类似如下, 要让 continue 为false 来停止线程, 怎么办? 有其他方案更好.
------解决思路----------------------
听你的描述 感觉你设计应该是这样
你的这个while循环应该放到另外一个线程去跑
而你的console控制用户输入的主线程 一直用于处理用户输入就行 这是一个典型的多线程
否则就如你所说 无法输入了
------解决思路----------------------
虽然单独使用全局变量逻辑上是没有问题的,但一般还是使用线程同步对象为佳,比如:
在控制台下面,
类似如下, 要让 continue 为false 来停止线程, 怎么办? 有其他方案更好.
BOOL bConintue = TRUE;
void foo()
{
int i = 0;
while (bConintue)
{
cout << i++ << endl;
Sleep(500);
}
}
------解决思路----------------------
听你的描述 感觉你设计应该是这样
你的这个while循环应该放到另外一个线程去跑
而你的console控制用户输入的主线程 一直用于处理用户输入就行 这是一个典型的多线程
否则就如你所说 无法输入了
------解决思路----------------------
虽然单独使用全局变量逻辑上是没有问题的,但一般还是使用线程同步对象为佳,比如:
#include <chrono>
#include <iostream>
#include <mutex>
#include <string>
#include <thread>
using namespace std;
mutex locker;
void foo()
{
int i = 0;
while (!locker.try_lock())
{
cout << i++ << endl;
this_thread::sleep_for(chrono::milliseconds(500));
}
locker.unlock();
}
int main()
{
string s;
locker.lock();
thread t1(foo);
getline(cin, s);
locker.unlock();
t1.join();
return EXIT_SUCCESS;
}