pthread_create使用类中函数指针的…

本文通过一个实例展示了如何在C++中使用类成员函数指针作为线程函数,探讨了pthread_create函数对函数指针的要求,并讨论了read/write阻塞与线程之间的关系,证明了同一进程中读写阻塞不会影响其他线程的执行。同时,提到了强制转换类成员函数指针的方法,并给出了示例代码。
摘要由CSDN通过智能技术生成

原有的程序是利用一台PC机的共享内存来实现两个程序间的通讯的,最近要求改了,要设计2台PC间这两个的程序的通讯,想把通讯部分的程序做成类封装起来。其中,由于要有多线程的部分。就是说,可能在一个线程里读,在另一个线程里写。所以得用到类成员函数的函数指针部分。

为了验证可行性,编写了下面的程序:

class MyThread

{

public:

  static int num;

  static void * ThreadToRun(void *)

  {

    printf("Num is %d/n",num);

    return NULL;

  }

};//;不要忘了分号

int MyThread::num = 0;

int main(void)

{

  MyThread obj_thread;

  pthread_t thread;

  pthread_create(&thread,NULL,obj_thread.ThreadToRun,NULL);

  ...// 其他部分 没有也行

  pthread_join(thread,NULL);

  return 0;

}

以上是验证程序。

该程序首先验证了,如何使用类的成员函数指针。在线程创建函数里pthread_create(&thread,NULL,obj_thread.ThreadToRun,NULL);我使用了【对象+.+函数名】的方式,而没有使用【类名::函数名】的方式。这是因为,pthread_create函数需要的是一个实际存在的函数的指针。而【类名::函数名】方式并没有满足这个要求(没有对象,就没有成员函数)。而且,使用的函数必须是静态函数,也是这个原因(这个是猜测)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值