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

Sylar---协程调度模块

协程调度模块:

首先是协程任务类FiberAndThread,包括协程,函数,指定的线程;提供了五个构造函数,只传协程的智能指针,只传函数对象,传协程智能指针的指针,函数对象指针,还有一个默认构造函数,为了是STL容器中初始化时调用默认构造函数,reset方法将任务的资源重置。

 struct FiberAndThread {Fiber::ptr fiber;std::function<void()> cb;int thread;FiberAndThread(Fiber::ptr f, int thr):fiber(f), thread(thr) {}FiberAndThread(Fiber::ptr* f, int thr):thread(thr) {fiber.swap(*f);}FiberAndThread(std::function<void()> f, int thr):cb(f), thread(thr) {}FiberAndThread(std::function<void()>* f, int thr):thread(thr) {cb.swap(*f);}FiberAndThread():thread(-1) {}void reset() {fiber = nullptr;cb = nullptr;thread = -1;}};

内部维护了一个线程池,以及任务队列,当线程取任务时需要枷锁,这里使用互斥锁。

提供添加调度任务的方法,添加的可以是函数或者协程,也提供批量添加任务,使用迭代器作为参数,添加任务时加锁,然后调用无锁添加任务函数进行添加操作,添加完成侯通知对应的线程有任务来了,具体没有实现。

http://www.lryc.cn/news/368026.html

相关文章:

  • iOS Hook 崩溃
  • 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测
  • linux内核下rapidio(TSI721)相关笔记汇总
  • 从GPT-4到GPT-4o:人工智能的进化与革命
  • 【Java】/*抽象类和接口*/
  • TCP/IP协议介绍——三次握手四次挥手
  • [C++]基于C++opencv结合vibe和sort tracker实现高空抛物实时检测
  • Apache Doris 基础 -- 数据表设计(模式更改)
  • 【机器学习】【遗传算法】【项目实战】药品分拣的优化策略【附Python源码】
  • 电子电气架构 ---车载安全防火墙
  • 解决selenium加载网页过慢影响程序运行时间的问题
  • 何为云防护?有何作用
  • 2024050402-重学 Java 设计模式《实战责任链模式》
  • centos7安装字体
  • Llama模型家族之使用 ReFT技术对 Llama-3 进行微调(三)为 ReFT 微调准备模型及数据集
  • 学习Canvas过程中2D的方法、注释及感悟一(通俗易懂)
  • 《TCP/IP网络编程》(第十三章)多种I/O函数(2)
  • Java集合汇总
  • 度小满金融大模型的应用创新
  • Android WebView上传文件/自定义弹窗技术,附件的解决方案
  • selenium 输入框、按钮,输入点击,获取元素属性等简单例子
  • 结构体构造函数
  • 基于单片机的电子万年历设计
  • 大厂真实面试题(一)
  • Docker搭建ELKF日志分析系统
  • 把系统引导做到U盘,实现插上U盘才能开机
  • 【计算机网络基础知识】
  • 个股场外期权个人如何参与买卖?
  • 程序猿大战Python——pycharm软件的使用
  • Unity Standard shader 修改(增加本地坐标裁剪)