2012-11-23 4 views
0

를 사용하여 스레드 함수로 멤버 함수를 호출 방법. 나는이 같은 진술을 다른 회원의 Worker 클래스의 함수에서 가지고 있으므로, 그 값은 this이다.부스트

, 나는 오류

error:bind is not a member of boost. 

을 얻고 나는 그것을 알아낼 수 없습니다입니다. 도와주세요. 미리 감사드립니다 :).

#include <boost/thread/thread.hpp> 
#include <iostream> 

class Test 
{ 
public: 
    void Main() { boost::thread t(&Test::run, this); } 
    void run() { while(1){ std::cout << "some functionality here"; } } 
}; 

int main() 
{ 
    Test test; 
    test.Main(); 
} 
+0

있습니까? "파일을 찾을 수 없습니다"와 같은 오류가 표시되지 않습니까? –

+0

@ArmenTsirunyan 아니요. 그런 종류의 오류가 발생하지 않습니다. 실제로 나는 잘 작동하는 약간의 부스트 뮤텍스 잠금 장치를하고있다. – Chaitanya

+0

'Test :: Main'의 끝에서't.join();'을 움직이면 위의 샘플이 예상대로 컴파일되어 실행됩니다. gcc 4.6, 부스트 1.46. – chill

답변

0

부스트 스레드가 내부적으로 그렇게 바인드를 사용 : 당신은 당신의 전처리 실제로 부스트 파일을 포함 찾을 수 있는지 확인

#include <boost/thread/thread.hpp> 
#include <iostream> 

class Test 
{ 
public: 
    void Main() { std::cout << "hello" << std::endl; } 
}; 

int main() 
{ 
    Test test; 
    boost::thread t(&Test::Main, test); 
    t.join(); 
} 
+0

조차 그 방법을 시도해 보았습니다 만, 오류 : 부울 :: thread :: thread (void (plxCollectorRedis :: plxRedis :: *)(), plxCollectorRedis :: plxRedis * const)' – Chaitanya

+0

더 큰 코드 샘플을 작성해야합니다. 위의 예제가 잘 작동하기 때문입니다. – goji

+0

필요한 정보로 내 질문을 편집했습니다. – Chaitanya