协程
文章平均质量分 81
birate_小小人生
专注,自信,坚持
展开
-
协程的hook操作
文章目录1. hook 原理1.1 函数解析2. hook实现2.1 使用环境变量LD_PRELOAD2.2 源码入侵1. hook 原理hook机制本质上是一种函数的劫持技术,比如我们通常需要调用malloc函数来进行内存分配,那么能不能我们自己封装一个同名、同入参和同返回值的malloc函数来替代系统的malloc函数,在我们自己封装的malloc函数中实现一些特定的功能,而且也能回调系统的malloc,这就是hook机制。系统提供给我们的dlopen、dlsym族函数可以用来操作动态链接库,比如原创 2021-07-12 00:00:36 · 769 阅读 · 0 评论 -
libgo的上下文切换
在 libgo 的上下文切换上,并没有自己去实现创建和维护栈空间、保存和切换 CPU 寄存器执行状态信息等的任务,而是直接使用了 Boost.Context。Boost.Context 作为众多协程底层支持库,性能方面一直在被优化。Boost.Context所做的工作,就是在传统的线程环境中可以保存当前执行的抽象状态信息(栈空间、栈指针、CPU寄存器和状态寄存器、IP指令指针),然后暂停当前的执行状态,程序的执行流程跳转到其他位置继续执行,这个基础构建可以用于开辟用户态的线程,从而构建出更加高级的协程等原创 2021-05-16 23:49:55 · 789 阅读 · 0 评论 -
libgo的协程调度分析
libgo1. libgo协程2. 调度器3. 协程执行器执行器对协程的调度4. 协程任务Task1. libgo协程libgo中的有调度器(scheduler) 和执行器(processer)的概念:调度器主要用于创建执行器(支持动态扩展),对调度器而言,每个执行器是一个单独的线程,调度器做的最主要的工作,就是平衡各个执行器中的协程数量,防止饥饿效应,部分执行器过忙,部分执行器却没有task可执行,另外,如果某个执行器卡住,调度器也会将执行器中的可运行协程取出,放到负载最低的执行器上。直接负责线原创 2021-05-16 23:05:02 · 995 阅读 · 1 评论 -
libgo的简介
libgo背景源码背景今天谈谈比较热门的协程框架libgo, 其实和腾讯微信后台的协程库libco相比,libgo的性能大大超过libco,下图是从协程的各个角度相比。源码libgo源码https://github.com/yyzybb537/libgo或https://gitee.com/yyzybb537/libgollibgo的目录结构说明:w@w:~/wz/libgo/libgo$ ls -l total 52drwx------ 2 w w 4096 4月 24 21:原创 2021-05-16 14:56:58 · 2840 阅读 · 0 评论 -
NtyCo协程的性能测试
先看一张图右上图是服务器, 下面两张图是客户端,我们可以看到cpu的利用率快接近90%,说明协程的利用率是很高的,虚拟机的内存只有4G,导致连接数到达26w的时候基本就会崩掉。服务器代码:server客户端代码:client跑的时候需要预先设置一些参数才可以,具体可查看:TCP百万并发之参数设置...原创 2021-05-09 16:25:15 · 153 阅读 · 0 评论 -
Ntyco协程之间调度的实现
Ntyco调度器的实现协程的运行状态调度器的运行状态协程如何被调度1.生产者消费者模式2. 多状态下运行我们来思考个问题。协程的运行状态包含{就绪,睡眠,等待},运行体回调函数,回调参数,栈指针,栈大小,当前运行体。调度器的运行状态包含{就绪,睡眠,等待},一个运行体如何高效地在多种状态集合更换。 调度器与运行体的功能界限。协程的运行状态新创建的协程, 创建完成后, 加入到就绪集合, 等待调度器的调度;TAILQ_INSERT_TAIL(&co->sched->ready,原创 2021-05-08 23:13:48 · 307 阅读 · 0 评论 -
基于NtyCo的协程使用和API
NtyCo的使用和API1. NtyCo的工作流程1. 创建协程NtyCo的源码路径:NtyCo源码1. NtyCo的工作流程1. 创建协程当我们需要异步调用的时候,我们会创建一个协程。比如 accept 返回一个新的sockfd,创建一个客户端处理的子过程。 再比如需要监听多个端口的时候,创建一个 server的子过程,这样多个端口同时工作的,是符合微服务的架构的。创建协程的时候, 进行了如何的工作? 创建 API 如下:int nty_coroutine_create(nty_corouti原创 2021-05-08 17:21:51 · 433 阅读 · 0 评论 -
协程的原理
@[TOC] 协程原创 2021-05-06 22:58:46 · 8885 阅读 · 0 评论