上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 17 下一页
摘要: 基础知识 首先我们来看下栈帧的定义: In C and modern CPU design conventions, the stack frame is a chunk of memory, allocated from the stack, at run-time, each time a fu 阅读全文
posted @ 2021-07-23 11:17 Mr-xxx 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 引言 协程 yield 和 resume 的第三种情况,也就是会发生协程切换的第三种情况,即调用 read(), write() 等 I/O 操作而陷入 “阻塞”和最后又恢复执行的过程,需要注意的是, 这里的“阻塞”依然是用户态实现的过程。我们知道,libco 的协程是在底层线程上串行 执行的。如果 阅读全文
posted @ 2021-07-23 10:53 Mr-xxx 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 引言 poll是libco中所有hook后的函数中可以说是最重要的一个,因为我们不但可以这个函数来隐式的转移CPU执行权,而且其他hook后的函数还可以使用这个hook后的poll在不切换线程的情况下去监听套接字,并在超时或者套接字有事件到来的时候唤醒这个调用poll的协程。 在example_co 阅读全文
posted @ 2021-07-22 23:01 Mr-xxx 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 引言 我们总能在运行libco协程代码的最后看到对于函数co_eventloop的调用,它可以理解为主协程执行的函数。我们举一个简单的例子来说明它的作用: 1 void* routinefun(void* args){ 2 co_enable_hook_sys(); 3 while(true){ 4 阅读全文
posted @ 2021-07-22 22:38 Mr-xxx 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 一、什么是库 1. 概念 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll), 阅读全文
posted @ 2021-07-20 23:01 Mr-xxx 阅读(1538) 评论(0) 推荐(0) 编辑
摘要: 引言 在探究这个机制之前我们先来看看libco为什么被腾讯的工程师们创造出来。 如今微信已经是一个月活近12亿的现象级软件,不可否认其背后的技术架构一定是首屈一指的。但是罗马不是一日建成的。实际在微信运行之初其并发能力并不是像现在一样。事实上当时大部分模块都采用了半同步半异步模型。接入层为异步模型, 阅读全文
posted @ 2021-07-20 15:39 Mr-xxx 阅读(234) 评论(0) 推荐(0) 编辑
摘要: C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 一、面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量 阅读全文
posted @ 2021-07-20 10:57 Mr-xxx 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 事件驱动与协程调度 协程的“阻塞”与线程的“非阻塞” 生产者消费者模型 1 /* 2 * Tencent is pleased to support the open source community by making Libco available. 3 4 * Copyright (C) 20 阅读全文
posted @ 2021-07-19 22:16 Mr-xxx 阅读(133) 评论(0) 推荐(0) 编辑
摘要: Libco 协程的生命周期 创建协程(Creating coroutines) 前文已提到,libco 中创建协程是 co_create() 函数。函数声明如下: 1 int co_create( stCoRoutine_t **co,const stCoRoutineAttr_t *attr,vo 阅读全文
posted @ 2021-07-18 22:59 Mr-xxx 阅读(190) 评论(0) 推荐(0) 编辑
摘要: libco 的协程 通过上一篇的分析,我们已经对 libco 中的协程有了初步的印象。我们完全可以把 它当做一种用户态线程来看待,接下来我们就从线程的角度来开始探究和理解它的实现机制。 以 Linux 为例,在操作系统提供的线程机制中,一个线程一般具备下列要素: (1) 有一段程序供其执行,这个是显 阅读全文
posted @ 2021-07-18 22:15 Mr-xxx 阅读(288) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 17 下一页