linux下用c++产生线程

来源:互联网 发布:5g网络股票代码 编辑:程序博客网 时间:2024/05/29 17:36
//在c++编译环境下编译pthread_create会报错,出现问题的主要原因就是pthread_create的第3个参数——void*(void*)这个回调函数。//下面给出解决方法://将要调用的函数改成静态函数或全局函数:#include <iostream>using namespace std;#include <pthread.h>void *Bar(void *arg){cout << __PRETTY_FUNCTION__ << endl;}class Foo {public:Foo();~Foo();static void * Bar(void *arg);private:pthread_t tid_self;pthread_t tid_other;};Foo::Foo(){pthread_create(&tid_self, NULL, &Bar, NULL);pthread_join(tid_self, NULL);pthread_create(&tid_other, NULL, &::Bar, NULL);}Foo::~Foo(){pthread_join(tid_other, NULL);}void * Foo::Bar(void *arg){cout << __PRETTY_FUNCTION__ << endl;}int main(int argc, char *argv[]){Foo foo;return 0;}//若要调用类的成员,则用如下方法://将传递的参数定义为struct:struct myarg{//其他参数Foo* pFoo;}//然后在函数调用中:void*Foo::Bar(void*arg) {  struct myarg* parg =  (struct myarg*) arg;Foo* pFoo = parg->pFoo;//下面就可以调用Foo的成员变量了}