Есть клиент-серверная архитектура. Задача стоит в том, как ограничить время ответа сервера и прервать выполнение долгой задачи.
Пример:
class ITask
{
public:
virtual void run() = 0;
};
таски кладутся в очередь пула потоков (или потока, не важно) когда приходит запрос от клиента. Дальше таска выполняется и мы посылаем клиенту ответ.
Если таска выполняется больше, к примеру, 5-ти секунд, то надо прервать работу потока и послать клиенту ответ с ошибкой.
Есть ли готовые решения данной проблемы? Если нет, то как бы по грамотнее решить её своими велосипедами?