C++ 0x는 지정된 시간에 도달 할 때까지 뮤텍스를 잠그고 뮤텍스가 잠겨 있는지 여부를 나타내는 부울을 반환합니다.시간 초과 잠금이 C++ 0x에서 시간 초과 예외를 발생시키지 않는 이유는 무엇입니까?
template <class Clock, class Duration>
bool try_lock_until(const chrono::time_point<Clock,
Duration>& abs_time);
일부 컨텍스트에서는 시간 초과로 인해 잠금이 실패하는 예외적 인 상황을 고려합니다. 이 경우 예외가 더 충당되어야합니다.
차이를 만들기 위해 잠그기 전에 시간에 도달하면 lock_until을 사용하여 시간 초과 예외를 얻을 수 있습니다.
template <class Clock, class Duration>
void lock_until(const chrono::time_point<Clock,
Duration>& abs_time);
일부 상황에서는 lock_until이 더 적절하다고 생각합니까? 그렇다면 어느 것입니까? 그렇다면 try_lock_until이 항상 더 나은 선택 일 것입니다.
이 질문에서 try_lock_until에 특정한 것이 있습니까? 상황은 (a) 수신자가 의미있는 가치를 반환 할 수 있는지, 그리고 (b) 발신자가 계속할 수 있는지 여부에 따라 상황이 "예외적"인지 아닌지 여부. 우리는 (b)에 대해 논평 할 수 없기 때문에, 예외를 던지는 것이'try_lock_until'에 false로 반환하는 현명한 응답인지 여부를 말할 수 없습니다. 모든 호출자는 예외를 throw하여 false 값을 반환하는 함수에 응답 할 수 있습니다. C++ 표준 라이브러리는 메모리 부족 및 값을 반환 할 수없는 경우 (예 : 동적 캐스트 참조로 실패한 경우)를 제외하고 많이 throw하지 않습니다. –
@ 스티브 귀하의 의견은 lock_until이 필요하지 않은 이유 일 수 있다고 생각합니다. 답변을 추가 할 수 있습니까? 내 질문에 try_lock_until false를 반환하면 시간 초과 예외를 throw 할 수 있습니다. 어떤 상황에서 그렇다면? –