专栏首页信数据得永生C++中类成员函数作为多线程的入口

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

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

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

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指针的情况,如果需要传递多个参数,还要按老方法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 函数引用 替代方案

    通过接口和内部类 举个例子吧 比如new一个线程 c#里是这样 Thread tr = new Thread(new ThreadStart(func)...

    ApacheCN_飞龙
  • 米斯特白帽培训讲义 漏洞篇 SQL 注入

    SQL 注入就是指,在输入的字符串中注入 SQL 语句,如果应用相信用户的输入而对输入的字符串没进行任何的过滤处理,那么这些注入进去的 SQL 语句就会被数据库...

    ApacheCN_飞龙
  • Hexo 入门指南(三) - 文章 & 草稿

    之后在source/_posts目录下面,多了一个new-article.md的文件。

    ApacheCN_飞龙
  • 为什么CSS Grid在创建布局上比Bootstrap更好

    CSS Grid是一种在网络上创建布局的新方法。在我们第一次使用浏览器原生的CSS网格布局后,发现这种方式给我们带来太多好处了。 特别是如果将CSS Grid与...

    企鹅号小编
  • Vena Network通证交换已开启,抓住最后的上车机会

    11月5日北京时间晚8点,VENA正式启动全网通证交换。本次通证交换将持续到11月15日。目前,VENA官网、TokenPlus、LeekICO等平台都可以参与...

    程序猿DD
  • Ceph分布式存储之对象存储

    为了使用 REST 接口, 首先需要为 S3 接口初始化一个 Ceph 对象网关用户. 然后为 Swift 接口新建一个子用户.

    yuanfan2012
  • 1-MSP430点亮一个灯

    为了写一篇文章做铺垫--提醒着自己,,,,,, ? ? ? ? ? ? ? ? ? ? ? ?  现在看一下程序 ? 还是说一下是怎么关掉的 ? ? ? ? 往...

    杨奉武
  • 【Go 语言社区】用Go实现的简易TCP通信框架--转

    接触到GO之后,GO的网络支持非常令人喜欢。GO实现了在语法层面上可以保持同步语义,但是却又没有牺牲太多性能,底层一样使用了IO路径复用,比如在LINUX下用了...

    李海彬
  • 第29章 配置VLAN

    151. 以下关于S 系列以太网交换机access 端口和链路的描述正确的是______。(选择一项或多项)BD

    week
  • Linux系统管理(六) 原

    进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

    wuweixiang

扫码关注云+社区

领取腾讯云代金券