有没有像pthread_create这样的std::thread_create?

Is there an std::thread_create like pthread_create?

我正在这里开展一个项目,试图将一些 Linux C++ 代码移植到跨平台,我这里有一个使用 pthread 的包装器线程 class。

#include <pthread.h>

class ServerThread {
public:
   pthread_t tid;
   pthread_mutex_t mutex;
   int Create (void* callback, void* args);
};

我正在尝试将其直接移植到 std::thread,但此处的 Create 方法使用 pthread_create,据我所知启动线程,但我无法找到 std相当于.

int ServerThread :: Create (void* callback, void* args) {
   int tret = 0;
   tret = pthread_create(&this->tid, nullptr, (void*(*)(void *)) callback, args);
   if (tret != 0) {
      std::cerr << "Error creating thread." << std::endl;
      return tret;
   }

   return 0;
}

我真的不明白我在看那个 pthread_create 函数调用。这是某种奇怪的 void 指针双重转换吗?

我没有关于我正在使用的代码库的文档,所以我的猜测和其他人的一样好。

std::thread 的构造函数将使用提供的函数和参数启动新线程。

大致如此:

void thread_func(int, double) {
}

class ServerThread {

    std::thread thr;

    ServerThread(int arg1, double arg2)
      : thr(thread_func, arg1, arg2) {
    }

};

如果想运行线程在构造之后,可以先default-initializestd::thread,这样不会启动一个实际的线程,然后再移动一个新的std::thread 稍后启动线程的实例:

class ServerThread {

    std::thread thr;

    ServerThread() : thr() {
    }

    void StartThread(int arg1, double arg2) {
        thr = std::thread(thread_func, arg1, arg2);
    }

};