2016-09-01 6 views
1

클래스에 새 스레드를 만들어 사용해야합니다. Somethink 좋아 :클래스에서 스레드를 만들고 클래스 C++에서 사용하십시오.

class Somethink 
{ 
    public: 
    func_to_be_thread(); 
    init_func(); 
} 

Somethink::init_func() 
{ 
    std::thread newThread(func_to_be_thread); 
} 

int main() 
{ 
    Somethink ss; 
    ss.init_func(); 
} 

는 편집 : 어떻게 제대로 만들어? Everythink 내가 idk 클래스 (매개 변수를 실행하는 클래스 메서드에서 새 스레드를 만들 반환 오류를 썼습니다. 내 질문은 올바르게 수행하는 방법입니다.

+0

당신은 질문을하지 않았다. – Ryan

답변

2

을 확인 할 수 있습니다 구문에 대해 더 많은 도움을 필요로하는 경우에만 ... C++ (11)를 시작 표준 : 스레드를 사용할 수 있습니다 :

class Something 
{ 
    public: 
    void func_to_be_thread(); 
    void func_to_be_thread_advanced(const char* arg1); 

    std::thread init_func(); 
    std::thread init_func_with_param(const char *arg1); 
} 

std::thread Something::init_func() 
{ 
    return std::thread(&Something::func_to_be_thread, this); 
} 

또한 람다 및 매개 변수와 함께 할 수 있습니다

std::thread init_func_with_param(const char *arg1) 
{ 
    return std::thread([=] { func_to_be_thread_advanced(arg1); }); 
} 
+0

Thx가 작동 중입니다! 어떻게하면 무한하게 만들 수 있습니까? 내가 비동기 서버에서 패킷을 수신하고 내가 그것을 실행하면 그것은 활성 예외없이 전화를 종료라고 말하면 내가 그것에 가입하거나 분리 - 프로그램이 충돌합니다. –

+0

@ lika85456 당신이 맞다고 이해한다면'func_to_be_thread' 안에서 무한 루프를 사용할 수 있습니다. 그러나 다른 질문을 만들어 거기에 문제 코드를 삽입하는 것이 더 나은 것 같습니다. 새로운 문제를 더 잘 분석하고 더 나은 조언을 할 수있는 기회를 제공 할 것입니다. – Nikita

+0

2 일을 기다려야하므로 다른 질문을 만들 수 없습니다 ._. 그리고 그 마크를 확인 thx :) –

관련 문제