C++ 如何在无限循环中启动和停止(切换)多个线程
我试图找到一个解决方案,在无限循环中启动和停止多个线程 每个线程都应该是一个独立的任务,并且应该并行运行。线程在无限循环中开始,线程本身也在无限循环中得到。每个循环都应该以“GetKeyState”停止,这样我就可以切换线程了。但是我无法启动例如2个线程(程序的函数),因为.join()阻塞了执行,没有.join()线程就无法工作 你们有解决这个问题的办法吗?一个线程的切换开始等于线程无限循环的切换停止 这是我试过的一些代码C++ 如何在无限循环中启动和停止(切换)多个线程,c++,multithreading,visual-studio,visual-c++,C++,Multithreading,Visual Studio,Visual C++,我试图找到一个解决方案,在无限循环中启动和停止多个线程 每个线程都应该是一个独立的任务,并且应该并行运行。线程在无限循环中开始,线程本身也在无限循环中得到。每个循环都应该以“GetKeyState”停止,这样我就可以切换线程了。但是我无法启动例如2个线程(程序的函数),因为.join()阻塞了执行,没有.join()线程就无法工作 你们有解决这个问题的办法吗?一个线程的切换开始等于线程无限循环的切换停止 这是我试过的一些代码 #包括 #包括 #包括 类键切换{ 公众: 按键切换(int键):m
#包括
#包括
#包括
类键切换{
公众:
按键切换(int键):mKey(键),mActive(假){
运算符bool(){
if(GetAsyncKeyState(mKey)){
如果(!mActive){
mActive=真;
返回true;
}
}
其他的
mActive=假;
返回false;
}
私人:
int mKey;
bool-mActive;
};
按键开关(VK_NUMPAD1);
按键切换开关2(VK_NUMPAD2);
void threadFunc(){
while(!toggle){
std::cout用@Someprogrammerdude的思想解决问题
#包括
#包括
#包括
#包括
标准::原子原子1=假;
标准::原子原子2=假;
std::原子原子AtogleStopall=假;
类键切换{
公众:
按键切换(int键):mKey(键),mActive(假){
运算符bool(){
if(GetAsyncKeyState(mKey)){
如果(!mActive){
mActive=真;
返回true;
}
}
其他的
mActive=假;
返回false;
}
私人:
int mKey;
bool-mActive;
};
按键开关(VK_NUMPAD1);
按键切换开关2(VK_NUMPAD2);
void threadFunc(){
while(atoglestopall==false)
{
如果(aToggle1){std::cout,如我所说,如果我不使用.join(),我会遇到一个异常,并且无法启动线程,因为它调用abort(),那么一个布尔标志是“切换”的呢并由每个线程检查。如果标志已清除,线程将执行它应该执行的操作,如果设置,线程将不执行任何操作,直到标志再次变为清除。无意冒犯,但仅编写代码以消除异常从长远来看是行不通的。此处的join
完全没有意义。至于join代码>问题,在main
函数退出之前连接线程的末尾创建一个新循环。可以简化:while(true){if(atoglestopall)break;if(atogle1){std::cout可以进一步简化:while(atoglestopall==false){if(atogle1){std::cout