Я пытаюсь сделать программу, которая должна периодически запускать 2 задачи. То есть, например, запустите задачу 1 каждые 10 секунд и запустите задачу 2 каждые 20 секунд.C++ thread, который запускает несколько потоков
Я хочу создать два потока, каждый с таймером. Тема 1 запускает новый поток с заданием 1 каждые 10 секунд. и Thread 2 запускает новый поток с задачей 2 каждые 20 секунд.
Мое сомнение в том, как запустить новую задачу 1, если предыдущая задача 1 еще не закончена?
while (true)
{
thread t1 (task1);
this_thread::sleep_for(std::chrono::seconds(10));
t1.join();
}
Я пытался это сделать, но таким образом он только запустит новую задачу 1, когда предыдущий закончит.
EDIT:
В основном я хочу реализовать планировщик задач. Запуск задачи1 каждые X секунд. Запуск задачи2 каждые Y секунд. Я думал, в чем-то вроде этого:
thread t1 (timer1);
thread t2 (timer2);
void timer1()
{
while (true)
{
thread t (task1);
t.detach()
sleep(X);
}
}
то же самое для Таймер2 и task2
Пожалуйста, отправьте сообщение [MCVE]. Что такое 'task1'? –
Это важно? Я еще не реализовал задачу1. Но это просто простая функция для вычисления некоторых значений и хранения в базе данных. – jcmpoliveira
Вам нужно, чтобы одновременно выполнялись две задачи1? Не могли бы вы уйти с одним потоком task1, где если task1 заканчивается раньше, поток спит до тех пор, пока время не запустится иначе, иначе цикл и повторный запуск? – user4581301