c++中用类创建两个线程出现的线程入口是静态函数问题

c++语言写一个udp的类,其中有两个线程,一个是发送的线程,一个试接收的线程。


线程的入口是个 void *函数,在c下 可以直接做成全局的函数,但是在c++下我想用类来实现。

结果 有一个规则出现,

pthread_attr_init (&attr_freetp);
pthread_attr_setschedpolicy (&attr_freetp, SCHED_RR);
param.sched_priority = APP_TSK_DEFAULT_PRIO;
pthread_attr_setschedparam (&attr_freetp, &param_ft);
pthread_create (&pthread_ft_id, &attr,&udpsession::UdpRecvthread, NULL);
pthread_attr_destroy (&attr_freetp);


如上udpsession::UdpRecvthread这个函数必须要求是静态的,然后又在class类里加上 static ,然后又提示我不能用this-> 所以才改成现在的样子。编译顺利通过。但是 在void *udpsession::UdpRecvthread(void *arg)中又不能使用this-> ,想访问类变量都出现错误,因为类变量不是静态的,会在多个函数中使用,所以这种思路还是有问题。


class A{
public:
int c; //非静态成员变量

static void thread(void* b) {
A* a = (A*)b;
a.c; //访问非静态成员变量

}
}

sitemap