使用pthread执行成员函数的C++

C++ with pthread executing a member function

本文关键字:C++ 函数 成员 pthread 执行 使用      更新时间:2023-10-16

我想用c++编写一个关于pthreads的小测试程序,我没有pthreads的经验,但到目前为止我读到的是存在问题,因为pthread是一个c结构。

我的代码如下:

class A{
       public:
            int main();
            void* do_work();
            static void* helper_do_work(void*);
};
void * IMagFieldSvc::do_work(){
}
void* IMagFieldSvc::helper_do_work(void* context)
{
          return ((IMagFieldSvc*)context)->do_work();
}
int A::main(){
…
          pthread_create(&thread, &attr, &helper_do_work, &svc);
          pthread_join(thread, NULL);
}

但是用编译

g++-pthread测试.cxx

返回

/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../lib64/crt1.o:在函数_start': (.text+0x20): undefined reference to main'中collect2:ld返回1退出状态

我试着添加

extern "C" void* helper_do_work(void*);

不管这样做,但错误是相同的

哈尔普打喷嚏?

不知道我是否应该就此单独提出一个问题:此外,在do-work中,我想访问和更改成员变量,练习的全部目的是了解如何访问和更改这些成员变量,使它们与__thread成为本地线程。这些成员变量是自定义类型的,有自己的构造函数和析构函数,我不知道为什么会有区别,但显然。。。

main不能是成员函数,必须在全局命名空间中定义。

定义如下:

int main()
{
// ...
}