#include <iostream>
#include <pthread.h>
using namespace std;
class Base
{
private:
public:
void threadCall1( void * value)
{
cout<<"inside threadCall1"<<endl;
cout<<"Value is"<<(int *)value<<endl;
}
protected:
};
class Derived
{
private:
public:
void threadCall2 ();
protected:
};
void *passValue(void * q)
{
cout<<"inside passValue"<<endl;
Base *b = new Base();
b->threadCall1(q);
cout<<"after threadCall1"<<endl;
Derived *d;
cout<<(int *)q<<endl;
pthread_exit(NULL);
}
void Derived::threadCall2()
{
cout<<"inside threadCall2"<<endl;
}
int main ()
{
int k = 2;
pthread_t t1;
cout<<"inside main"<<endl;
pthread_create(&t1,NULL,&passValue,(void *)k);
cout<<"after pthread_create"<<endl;
return 0;
}
输出:
inside main
after pthread_create
一切似乎都很好,但不知道为什么passValue
没有被调用,我得到了上面的输出,但缺少其他日志inside passValue
答案 0 :(得分:2)
您的main
会提前终止并在创建后立即杀死该主题。在主要return 0;
之前添加此行:
pthread_join(t1, NULL);
这将使主线程等待(块)终止t1
。