尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

多线程封装

多线程封装
📅 发布时间:2026/6/19 20:00:26
//Thread.hpp
#pragma once
#include<iostream>
#include<string>
#include<cstring>
#include<functional>
#include<unistd.h>
#include<cassert>
#include<pthread.h>
class Thread;
//上下文
class Context{
public:Thread *this_;void *args_;
public:Context():this_(nullptr),args_(nullptr){}~Context(){}
};
class Thread{//using func_t = std::function<void*(void*)>;typedef std::function<void*(void*)> func_t;const int num=1024;
public:Thread(func_t func,void *args,int number):func_(func),args_(args){char buffer[num];snprintf(buffer,sizeof buffer,"thread-%d",number);name_=buffer; }//在类内创建线程,想让线程执行对应的方法,需要将方法设置为staticstatic void *start_routine(void *args){//类内成员,有缺省参数//静态方法不能调用非静态成员方法或者成员变量// return func_(args_);Context *ctx=static_cast<Context*>(args);void *ret=ctx->this_->run(ctx->args_);delete ctx;return ret;}void start(){Context *ctx=new Context();ctx->this_=this;ctx->args_=args_;int n=pthread_create(&tid_,nullptr,start_routine,ctx);assert(n==0);(void)n;}void join(){int n=pthread_join(tid_,nullptr);assert(n==0);(void)n;}void *run(void *args){return func_(args);}~Thread(){//do nothing}
private:std::string name_;func_t func_;void *args_;pthread_t tid_;
};

相关新闻

  • k8s-Pod中的网络通信(3)
  • CSP-S 回顾
  • 20231427田泽航第七周预习报告

最新新闻

  • 武汉买猫买狗去哪看?梦宠山庄实地体验分享 - 园友3800037
  • 从零到一:Jetlinks物联网平台服务器部署实战与避坑指南
  • (转)一次ANSYS EM 2023R1 “Request name electronics_desktop does not exist in the licensing pool.“的离谱解决记录
  • 面试被问“你的缺点是什么”,90%的应届生都答错了!(附满分话术)
  • Spring Cloud Alibaba 最佳实践:基于 Spring Boot 4.0 的完整微服务示例项目
  • 三步掌握AI斗地主:如何用DouZero智能助手提升你的游戏胜率

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号