2014-12-26 11 views
0

클래스에서 실패, 나는 컴파일 과정에서이부스트 scoped_lock 매번

void Agent::notify(Packet& packet, Peer peer) { 
    boost::mutex::scoped_lock lock(mutex_); 
    ... 
} 

문제 없음과 같은 기능을 통해 뮤텍스를 사용하고 싶습니다. 내가 프로그램을 실행할 때, 항상 향상 말하는이 줄에서 실패 :

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >' 
    what(): boost: mutex lock failed in pthread_mutex_lock: Invalid argument 
Abandon (core dumped) 

나는 lock() 또는 unlock 방법을 사용하려고 노력하지만, 같은 문제. try_lock을 사용할 때 조건에 의해 실패하지 않는 것은 항상 거짓입니다.

인터넷에서 검색했습니다.이 주소는 https://svn.boost.org/trac/boost/ticket/9307입니다.

하지만 문제는 내 프로그램이라고 생각하지만 어디서 보지 못합니다. 내 테스트에는이 함수에 포함 된 스레드가 하나뿐입니다.

+1

어떻게'mutex_'가 선언/정의 되었습니까? 재귀 적으로 잠겨 있습니까? –

+0

boost :: mutex mutex_ – Saroupille

답변

0

문제는 프로그램에서 뮤텍스를 사용하는 스레드가 같은 레벨 일 필요가 있다는 것입니다. 그러나이 오류를 만든 스레드가 주 스레드였습니다. 생성 된 것이 아닙니다.