Я пытаюсь выполнить две операции одновременно: цикл в основном методе программы, который выводит Tick from main
, и другой цикл в классе, который выводит Tick from ConnectionManager
.
Этот конкретный фрагмент кода, который я запускаю, взят из одного из заданных здесь вопросов.
Файл main.cpp:
#include <Windows.h> // printf, Sleep
#include <thread> // thread
// Include Connection Manager
#include "ConnectionManager.h"
int main() {
ConnectionManager _CM;
while (1) {
printf("Tick from main");
Sleep(1500);
}
}
connectionmanager.h
#pragma once
class ConnectionManager
{
private:
void LoopForData();
public:
ConnectionManager();
};
ConnectionManager.cpp
#include "ConnectionManager.h"
#pragma once
#include <Windows.h>
#include <thread>
void ConnectionManager::LoopForData() {
while (1) {
printf("Tick from connection manager\n");
Sleep(1500);
}
}
ConnectionManager::ConnectionManager()
{
std::thread tobj(&ConnectionManager::LoopForData, this);
}
Ожидаемое поведение - оба цикла запускаются одновременно, однако вывод, который я получаю на консоли, происходит только из функции LoopForData, и я получаю следующее сообщение об ошибке: https://imgur.com/a/WO5AKE8
Чего мне не хватать?