ISO禁止启动自己的类方法的线程?

int*_*nt3 1 c++ multithreading

定义的原因:

void aClass::start(){
    void *ptr = this->startService;
    thread serviceth(ptr,this);
}
Run Code Online (Sandbox Code Playgroud)

ISO是否禁止?即使我:

void aClass::start(){
    thread serviceth(startService,this);
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:"没有匹配的呼叫功能".

Nat*_*ica 5

你需要提供std::thread一个类似的函数指针

void aClass::start(){
    thread serviceth(&aClass::startService, this);
}
Run Code Online (Sandbox Code Playgroud)

为了创建一个线程.但是我们遇到了另一个问题.在创建线程之后,函数结束并且线程被销毁.由于线程处于可连接状态(join()detach()从未被调用),线程的析构函数将抛出异常.

您可以创建serviceth一个成员,aClass以便线程可以在类存在时运行.