Я ищу способ гарантировать, что каждый раз, когда поток блокирует определенный ресурс, он вынужден освобождать этот ресурс через определенный период времени (если он еще не освободил его).Представьте себе соединение, в котором вам нужно ограничить время, в течение которого конкретный поток может владеть этим соединением.
Я предполагаю, что его можно использовать следующим образом:
{
std::lock_guard<std::TimeLimitedMutex> lock(this->myTimeLimitedMutex, timeout);
try {
// perform some operation with the resource that myTimeLimitedMutex guards.
}
catch (MutexTimeoutException ex) {
// perform cleanup
}
}
Я вижу, что тамявляется timed_mutex, который позволяет программе тайм-аут, если блокировка не может быть получена.Мне нужно, чтобы тайм-аут наступил после блокировки.
Уже есть некоторые ситуации, когда вы получаете ресурс, который может быть неожиданно забран.Например, сокеты tcp - после того, как установлено соединение с сокетом, код на каждой стороне должен обрабатывать случай, когда другая сторона разрывает соединение.
Я ищу шаблон, который обрабатывает типы ресурсов, которыеобычно тайм-аут по своему усмотрению, но когда они этого не делают, они должны быть сброшены.Это не должно обрабатывать каждый тип ресурса.