Я программист на C#, и теперь мне нужно создать программу на C++. То, что я пытаюсь достичь, это сделать бесконечный поток и дать ему время сна.Попытка понять потоки в C++
В C# я мог бы легко сделать это как
в основной функции
new Thread(taskfunction).Start();
и taskfunction
private void taskfunction()
{
while(true){Thread.Sleep(2500); // do stuff}
}
так это будет работать в фоновом режиме, пока моя программа включена. Я пытаюсь добиться того же в C++ как:
в основной функции
std::thread somethread(taskfunction);
somethread.join();
и taskfunction
void taskfunction()
{
while(true){this_thread::sleep_for(chrono::milliseconds(2500));// Do Stuff}
}
Таким образом, в то время как C# резьбы начинается и движется на C++ поток ожидает somethread.join();
, В чем разница и как я могу достичь того, что я делаю в C#, также в C++?
Спасибо
На самом деле вам нужно присоединиться или отключить свои потоки в C# и в C++ –
'join' означает« подождать, пока поток завершится ». Это не то, что вы хотите. Вы можете либо «отсоединиться», оставив другой поток в покое, либо поместив объект 'std :: thread' куда-нибудь позже. Просто не уничтожайте 'std :: thread'-объект без' join'ing или 'detach'ing в первую очередь. – nwp