다른 사람의 코드를 정리하려고하는데 클래스에 pthread_mutex_t
멤버 변수가있는 경우가 많이 있습니다. 많은 경우에 pthread_mutex_init()
이 호출되거나 잠금/잠금 해제되지 않습니다. 그 물체가 범위를 벗어나면, 그 물체를 적절하게 정리하기 위해 무엇이 필요한가? 잠금을 해제하려고 할 수 있습니까 (초기화되지 않았다면 어떻게됩니까?)? 내가 그것을 파괴해야합니까?초기화되지 않은 뮤텍스가 범위를 벗어납니다 - 클린업?
분석 도구에서 리소스가 손실되었을 수 있습니다. 잃어버린 것이 있습니까?
내가 말했어 야했는데 : 사용되지 않은 경우가 있습니다. 흔히 그렇지만 항상 그런 것은 아닙니다. _init()는 사용되지 않는 한 호출되지 않으며 확실하지 않습니다. 뮤텍스가 _init()되어 있지 않다면 뮤텍스에서 'destroy'를 호출 할 수 있습니까? –
초기화되지 않은 뮤텍스를 파괴하지 않는 것이 좋습니다. 'pthread_mutex_init()'와'pthread_mutex_destroy()'에 대한 호출을 추가하십시오. –
그러나 pthread_mutex_init() 만 뮤텍스를 초기화하는 유일한 방법은 아닙니다. 'PTHREAD_MUTEX_INITIALIZER'로 초기화 할 수도 있습니다. 자세한 내용은 질문에서 링크 된 맨 페이지를 참조하십시오. –