为什么我们不能在单例类中使用线程函数在C ++中作为calss的成员函数创建posix线程

时间:2015-10-15 21:59:43

标签: c++ linux multithreading posix

我正在尝试使用pthread_create()和线程函数作为类的成员函数在单例类的构造函数内创建一个新线程,如下所示。

#include <iostream>
#include <pthread.h>

using namespace std;

class singleton
{
        public:
                static singleton& getInstance()
                {
                        static singleton singleton_wrapper;
                        return singleton_wrapper;
                }

                void* check_func(void *arg)
                {
                        cout << "In thread Func" << endl;
                }

        private:
                singleton()
                {
                        pthread_create(&th_id, NULL, check_func, NULL);
                }

                ~singleton()
                {
                }

                singleton& operator=(singleton const&);
                singleton(singleton const&);

                pthread_t th_id;
};

int main()
{
    singleton& p = singleton::getInstance();
}

但是当我尝试使用g ++进行编译时,它会发出以下错误。

singletonthread.cpp: In constructor ‘singleton::singleton()’:
singletonthread.cpp:23:49: error: cannot convert ‘singleton::check_func’ from type ‘void* (singleton::)(void*)’ to type ‘void* (*)(void*)’
pthread_create(&th_id, NULL, check_func, NULL);

任何人都可以让我知道错误是什么或为什么我不能使用类的成员函数创建一个线程?

我不知道它是如何与另一个问题重复的。这个问题具体是关于单例类并在单例类的构造函数内创建一个线程。

0 个答案:

没有答案