首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

static pthread_create ?有关问题

2013-12-15 
staticpthread_create ??问题classShortDataLink{public://select 网络I/Ovoid* threadFun(void* para)vo

static pthread_create ??问题
class  ShortDataLink{
public:
//select 网络I/O
void* threadFun(void* para);
       void fun();
};

void ShortDataLink::fun()
{
......
pthread_t tid;
iResult = pthread_create(&tid, NULL, ShortDataLink::threadFun, this);
}
大神帮我看看这个问题。必须把threadFun定义为static的才会编译通过,貌似是pthread_create 是C 语言的函数,好像调用约定不一样,而threadFun是类非静态成员函数, 是 __thiscall.必须定义为static才能作为参数传给pthread_create。但是我如果定义为static就破外了设计,有没有其他的解决方法
。 类的成员函数 除了static的 天生带个this参数 要拿函数指针做别的参数。。。参数不对啊  想不出啥方法可以让非static成员函数当别的参数 mark
[解决办法]
不是调用约定,而是类中非static函数有个默认的this参数。
看你:
iResult = pthread_create(&tid, NULL, ShortDataLink::threadFun, this);
已经传了this,所以这里定义成static没有问题。
如果其他地方还用ShortDataLink::threadFun,需要this.你可以定义两个函数。
[解决办法]

引用:
不是调用约定,而是类中非static函数有个默认的this参数。
看你:
iResult = pthread_create(&tid, NULL, ShortDataLink::threadFun, this);
已经传了this,所以这里定义成static没有问题。
如果其他地方还用ShortDataLink::threadFun,需要this.你可以定义两个函数。

+1
如果怕影响通过对象调用改函数,最好是重载实现。

热点排行