Запускаются два потока. Потокам на выполнение даётся одна и та же функция. Функция работы потока выглядит следующим образом: выполняется некое вычисление, затем поток смотрит, закончил ли вычисления 2ой поток. Если не закончил, то поток ложиться спать и просыпается, когда закончит вычисления 2ой поток. Ниже вычисления имитируются при помощи метода sleep()
void func(int time) {
this_thread::sleep_for(chrono::seconds(time)); //имитация вычислений
if(второй поток не закончил вычисления)
этот поток засыпает и просыпается, когда второй поток закончит
вычисления
}
int main() {
thread th1(func, 10);
thread th2(func, 50);
th1.join();
th2.join();
return 0;
}
Я думал про условную переменную, но, насколько я понимаю, для этого нужно что-бы потоки запускали разные функции, а в примере выше оба запускают одну и ту же функцию func(). Если какой-то способ, как в pthread например, где есть обмен сигналами между потоками без условных переменных
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
У меня есть REST контроллер, который может удалять/вставлять/редактировать данные из бд, отображаю на jsp странице таблицу с соответствующими...