前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++中类成员函数作为多线程的入口

C++中类成员函数作为多线程的入口

作者头像
ApacheCN_飞龙
发布2019-02-15 11:48:14
2.8K0
发布2019-02-15 11:48:14
举报
文章被收录于专栏:信数据得永生

搜了一圈答案,基本上都是启动线程的时候传入this指针,在线程函数内部再强转的解决方案。可能显得有些别扭。

编译器不允许强制转换,那就用union来实现。

代码语言:javascript
复制
union
{
  void *(*trfunc)(void *);
  void *(lock_client_cache::*memfunc)();
} func;

func.memfunc = &lock_client_cache::do_thread;
pthread_t pid;
pthread_create(pid, 0, func.trfunc, this);
pthread_detach(pid);

do_thread是非静态类成员函数,没有参数。posix库的情况下返回一个void*,win32的线程的情况下返回void。

*该方法适用于只需要传递this指针的情况,如果需要传递多个参数,还要按老方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014年05月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档