用thread创建的多线程,在子线程中,控制主程序退出,如果没有等到子线程执行并结束线程,报错:Debug Error! Abort() has been called. 如下图:
代码的原理:
1、子线程改变控制主线程的变量值后,使用break跳出线程的主循环while;
2、在mian里面判断到变量的值,增加线程.join(),这个函数是一直阻塞,直到子线程运行完。
代码:
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <thread>
using namespace std;
int cycle = 1;
int cycle_control = 0;
void keyboard_hit()
{
char cin_char[20];
string cin_str = " ";
while (true)
{
while (!_kbhit())
{
Sleep(1);