Здравствуйте, szag, Вы писали:
S>Есть поток, который выполняет задачи вброшенные к нему в очередь.
S>Теперь необходимо сделать так, чтобы задачи выполнялись отложено, интервал примерно 100..4000 мс в зависимости от вброшенной задачи, указывается при вбросе задачи.
S>S>void push(task, uint32_t timeout); // с таймаутом
S>
S>3. timed_mutex: срабатывающий condition_variable по таймеру или по notify (добавление новой задачи). Тогда по каждому событию проверять всю очередь и выполнять задачи, таймаут которых подошел.
S>В #1 и #2 можно еще заюзать какой-нить map, для оптимизации, ключ — это время, чтобы проверять не всю очередь.
S>??? другие идеи? Может есть что-то готовое?
при постановке задачи в в очередь вычисляешь время, когда ее нужно запустить. очередь делаешь с приоритетом (время запуска). новые задачи втыкаешь в порядке приоритета. спишь на condition'e до начала запуска первой (топовой) задачи или втыкания новой задачи в очередь... -- все тривиально достаточно.