异步
文章平均质量分 71
self-motivation
专注LINUX系统与性能分析优化
展开
-
libco开发教程(一) ---- 第一个测试用例
libco开发教程(一) ---- 第一个例子libco背景关于libco的背景,可以看我之前的文章,在c中实现协程前一段时间一直在忙换工作的事情,因此c语言协程库的开发有一些搁浅.最近换工作的事情告一段落了,代码实现也就提上了日程.感兴趣的小伙伴可以跟着我的教程一步一步实践,最终实现一个功能完善能够在生产中使用的c协程库.TDD项目以TDD测试驱动开发的方式进行编码,我们先来编写一个最简单的测试用例test case#include "gtest/gtest.h"#include "原创 2021-09-22 15:51:36 · 420 阅读 · 0 评论 -
golang抢占实现(一)----------抢占的时机
golang抢占时机golang 1.14版本以后开始支持抢占协程.这里有个有趣的问题是:用户态调度的goroutine在什么时机触发抢占判断?熟悉linux的朋友可能知道,linux可能的抢占时机有:时钟中断处理里系统调用返回golang目前的实现golang编译器在每个函数调用之前都会插入以下代码: mov %fs:0xfffffffffffffff8,%rcx //获取tls cmp 0x10(%rcx),%rsp // 判断当前协程的stack是否足够原创 2021-07-14 23:48:34 · 578 阅读 · 0 评论 -
C语言中协程(coroutine)实现
无意中发现glibc支持swapcontext, getcontext, makecontext一系列函数,这不正好可以用来实现协程吗?直接撸了一波代码,果然不错。后面逐渐完善相关的io操作库,用它实现一个高性能的服务器.代码地址, 喜欢的记得给个start.后面再写篇文章详细讲述下实现原理。...原创 2021-06-10 23:35:33 · 1843 阅读 · 0 评论 -
8.GRPC C++源码阅读 异步服务器
更多相关文章www.anger6.com还是通过官方的例子来讲述:grpc/src/examples/cpp/helloworld/greeter_async_server.cc:main函数很简单int main(int argc, char** argv) {ServerImpl server;server.Run();return 0;}ServerImpl...原创 2019-05-25 22:44:46 · 1508 阅读 · 0 评论 -
理解Reactor模式: 基于线程和事件驱动
在web服务器开发中,有2种常见的架构:基于线程的架构和事件驱动的架构。基于线程的架构最初多线程server的实现一般都是采用每个连接一个线程的方法。这对于那些需要兼容非线程安全库的站点比较合适。也有使用多进程模型来隔离每个请求,这样单个请求出问题不会影响到其它请求。进程太重,上下文切换很慢而且内存消耗很大。因此,为了更好的扩展性,每个请求一个线程的方式更为常用。尽管多线程程...原创 2019-07-23 20:39:31 · 1277 阅读 · 0 评论