Привет, я пытался разбить цикл в середине его выполнения. Цикл показывает обратный отсчет секунд из 5-1. Я хочу разбить цикл в середине, используя любое нажатие клавиши, введенное user.I исследовал в течение некоторого времени и создал поток. Я установил глобальную переменную и обновил ее во втором потоке. Я дал условие в основной функции, используя эту глобальную переменную, но цикл не прерывается.Ошибка при разрыве цикла во время его выполнения
Вот код. Пожалуйста, помогите.
#include<iostream>
#include<windows.h>
#include<stdlib.h>
#include<iomanip>
#include<stdio.h>
using namespace std;
bool stop=false;
DWORD WINAPI thread1(LPVOID pm)
{
//check the getchar value
int a = getchar();
while (a != '0'){
a = getchar();
}
stop = true;
return 0;
}
int main()
{
HANDLE handle = CreateThread(NULL, 0, thread1, NULL, 0, NULL);
for(int i=5;i>0 && !stop;i--)
{
cout<<"\n\n\n\n\n\n";
cout<<setw(35);
cout<<i;
Sleep(1000);
system("CLS");
}
system("PAUSE");
}
Программа отсчитывает и в середине обратного отсчета я пытался функция loop.thread1 принимает входной и изменяет остановку (глобальная переменная). Но цикл в основной функции не прерывается (он должен) .Loop продолжает уменьшать переменную цикла, становится нулевым и заканчивается концом.
Можем ли мы иметь примеры того, что вы получаете и чего хотите? – Garf365
И, personnaly, я буду инвертировать поток, убить downcounting thread немедленно из основного потока – Garf365
@ Garf365 Я хочу разбить цикл в main(). И, пожалуйста, уточните обратную часть резьбы. – anjanik012