Witam
W visualu działa a w onlinegdb nie. Nie widzę co może być źle.
#include <iostream>
#include <memory>
#include <thread>
#include <initializer_list>
#include <algorithm>
#include <vector>
#include <mutex>
#include <memory>
#include <condition_variable>
using namespace std;
condition_variable var;
void watek(mutex& mut)
{
unique_lock<mutex> guard(mut); //to mi domyslnie lokuje mutex bez 2-ego parametru jao std::defer
var.wait(guard); //ale to na wstępie robi mi unlocka i czeka na notify
cout << this_thread::get_id() << " start" << endl;
cout << this_thread::get_id() << " end" << endl;
}
int main()
{
thread watki[10];
mutex mut;
for(int i = 0; i<10; ++i)
watki[i] = thread(watek, ref(mut));
mut.lock(); //de fakto tego nawet nie potrzebuje
cout << "koniec towrzenia" << endl;
var.notify_all();
mut.unlock(); //tego też nie
for(int i = 0; i<10; ++i)
if(watki[i].joinable())
watki[i].join();
return 0;
}