std::stop_callback<Callback>:: ~stop_callback
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
stop_callback::~stop_callback
|
||||
| Deduction guides |
|
~stop_callback
(
)
;
|
(C++20부터) | |
stop_callback
객체를 파괴합니다.
만약
*
this
가 연관된 중지 상태를 가진
stop_token
을 가지고 있다면, 여기서 콜백을 등록 해제합니다.
콜백 함수가 다른 스레드에서 동시에 호출되고 있는 경우, 콜백 함수 호출이 완료될 때까지 소멸자가 완료되지 않습니다. 콜백 함수가 소멸자가 호출되는 동일한 스레드에서 호출되고 있는 경우, 소멸자는 콜백 호출 완료를 기다리지 않고 반환합니다(참고 사항 참조).
참고 사항
stop_callback
소멸자는 경쟁 조건과 교착 상태를 방지하도록 설계되었습니다. 다른 스레드가 현재 콜백을 호출 중인 경우, 해당 호출이 완료될 때까지 소멸자는 반환할 수 없으며, 그렇지 않으면 함수 객체가 실행 중인 동안 파괴될 가능성이 있습니다. 콜백 함수는 복사 가능하거나 이동 가능할 필요가 없으며, 등록 후에도
stop_callback
객체 자체 내에 존재합니다.
반면에, 현재 소멸자를 호출하는 스레드가 콜백을 호출하는 스레드와 동일하다면, 소멸자는 대기할 수 없으며 그렇지 않으면 데드락이 발생할 수 있습니다. 콜백 함수 자체가 직접적 또는 간접적으로
stop_callback
을 파괴할 수 있기 때문에, 동일한 스레드가 콜백 함수를 호출하는 동안
stop_callback
을 파괴하는 것이 가능하고 유효합니다.