当前位置: 首页 > news >正文

多线程封装

//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_;
};
http://www.jsqmd.com/news/29344/

相关文章:

  • 线程优先级
  • 使用 GeckoCircuits 设计 Buck 电源环路
  • 第k小的数的分治算法
  • Day29-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\reflect
  • k8s-Pod中的网络通信(3)
  • 一个灵感:思维的断章
  • 第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)
  • CSP-S 回顾
  • https://heylink.me/tizihacks/
  • 2025CSP-J游记
  • 通达信:引用函数 - Leone
  • 20231427田泽航第七周预习报告
  • CSP总结
  • AI泡沫再思考:技术革命与投资狂潮的真相
  • [群表示论]基本概念
  • P14362 [CSP-S 2025] 道路修复
  • 10.30总结
  • 基于 Maxwell 实现 MySQL 数据实时迁移到 Mongodb
  • CSP2025-S 坠机记
  • jenkins安装排错
  • 一、RK3562板卡上手
  • 【题解】CCPC 2024 Jinan Site [J] Temperance
  • 2025 年 11 月金属件去毛刺机,五金去毛刺机,自动去毛刺机厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 原来求凸包这么简单
  • 2025 年 11 月全自动激光去毛刺机,金属件去毛刺机,自动去毛刺机厂家最新推荐,精准检测与稳定性能深度解析!
  • 2025 年 11 月数控激光去毛刺机,冲压件去毛刺机,精密去毛刺机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • AT ARC156C Tree and LCS 题解
  • 2025 年 11 月回转式风机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CSPT漏洞浅析
  • 【题解】CCPC 2024 Jinan Site [F] The Hermit