2010-08-10 6 views
1

콜백 함수의 유효성을 검사 할 수있는 방법이 있는지 알고 싶습니다.C++ QThread 및 콜백 콜백 함수

문제는 다음과 같습니다.

클래스 A; 클래스 B;

다음 클래스 A의 초기화 함수가 수행됩니다.

boost :: function < void (class B)> call_back;

using namespace boost :: lambda; call_back = bind (& A :: callback_after_preparation, this, boost :: lambda :: _ 1);

문제는 다시 QThread에서 그리고 :: callback_after_preparation 전에 호출 통화가 QThread에서 호출이다, A의 객체는 응용 프로그램에서 삭제됩니다 응용 프로그램 그래서

(이 응용 프로그램에서 하나의 유스 케이스입니다) A.에서 데이터 플레이어에 액세스하는 동안 종료합니다.

call_back 함수의 유효성을 검사 할 방법이 있습니까?

특정 개체가 아마도 다른 스레드에서 삭제 된 것을 알 수있는 방법이 있다면 당신은 정말 요구하는

+0

boost :: function을 사용하여 아직 작업하지 않았으므로이 경우 작동하는지 여부는 알 수 없지만 스레드 된 응용 프로그램에서 포인터가 매달리지 않게하는 가장 간단한 방법은 std :: tr1 :: weak_ptr입니다. boost :: funtion 선언에서 사용할 수 있습니까? – stefaanv

답변

0

에 답변 해주세요. 그런 것들을 처리하는 것은 여러분의 코드에 달려 있습니다. 결국 그것은 일종의 플래그를 설정함으로써 삭제를 수행 한 코드였습니다.