C++ асинхронный бесконечный цикл

416
17 июня 2017, 13:53

Здравствуйте. У меня есть бесконечный цикл. При запуске, как и ожидалось, программка виснет, ничего не нажимается. Как можно запустить этот цикл асинхронно? В C++ не очень силен, мне нужен простенький пример. Спасибо)

for (size_t i = 0; i < INFINITY; i++) {
    somefunction();
}
Answer 1

Можно вынести функцию в отдельный поток std::thread, а вне этой функции управлять ею. Один из вариантов управления этой функции - через указатель. Вот небольшой пример где в бесконечном цикле выводится "some" до того момента пока мы не нажмем клавишу:

#include <iostream>
#include <conio.h>
#include <thread>
using namespace std;
void func(bool *workStatus)
{
    for (size_t i = 0; i < INFINITY; i++) {
        if (*workStatus == false)
            break;
        cout << "some "; // В вашем случае тут somefunction()
    }
}
int main()
{
    bool status = true;
    thread test(func, &status);
    while (!_kbhit());
    status = false;
    test.join();
    system("pause");
    return 0;
}
READ ALSO
Помещение строк в массив и считывание информации от туда в с++

Помещение строк в массив и считывание информации от туда в с++

ПомогитеНужно из файла считать строки (считал), и потом нужно что бы при вводе какого то слова из строки вылетала вся строка

310
ESP8266 читает JSON, но не читает PHP файл

ESP8266 читает JSON, но не читает PHP файл

Есть код для ESP8266, который парсит данные на моем сайте и выполняет включение/выключение светильникаКогда это был статичный JSON файл, оно все...

440
Django Waypoints Infinite Scroll и get параметр

Django Waypoints Infinite Scroll и get параметр

Использую jQuery Waypoints Infinite Scroll в приложении Django

337