ST源码分析-st_thread_create
本文 主要分析 st_thread_create() 函数的内部实现。 st_thread_create 流程图如下: 现在开始一行一行代码分析 st_thread_create _st_thread_t *thread; _st_stack_t *stack; void **ptds; char *sp; 上面...
本文 主要分析 st_thread_create() 函数的内部实现。 st_thread_create 流程图如下: 现在开始一行一行代码分析 st_thread_create _st_thread_t *thread; _st_stack_t *stack; void **ptds; char *sp; 上面...
在上一篇文章《ST源码分析-lookupdns》里,已经通过一个简单的域名查询程序演示了 ST 协程的使用。 本文 主要分析 st_init() 函数的内部实现。 lookupdns 流程图如下: 在讲代码逻辑,流程之前,贴一张主要的数据结构关...
lookupdns 只有 300 行代码,但是却演示了 如何使用 协程 并发请求 dns。 lookupdns 的流程图如下: 编译之后,运行以下命令: ./obj/lookupdns www.xianwaizhiyin.net www.baidu.com 上面两个命令 用协程 查询了两...
C语言中的 goto 实现的是函数内部的跳转,也就是 local jump。但是 C 标准库还有 setjmp() 跟 longjmp() 实现不同函数的跳转。这种不同函数的跳转叫做 long jump。下面就来介绍 C标准库 的 setjmp() 跟 longjmp() 函数的使用。 请...
lookupdns 是 ST 的一个示例程序,由于 ST 是 makefile 的项目,并没有提供 CMake 文件,所以先演示 一下 如何使用 Clion 来调试 Makefile 的项目。 也可以使用 gdb 调试,不过我个人习惯 用 Clion。 注意,Clion 也只是把众多...
项目的核心文件如下图: 在 linux 系统下,执行以下命令即可编译 state-thread 项目 make linux-debug state-thread 库的 编译规则非常简单,不需要过多分析了,主要有以下重点。 重点一: CC = cc ...
ST 是 state-thread 的缩写。state-thread 是一个 C 语言实现的协程库,这个库是 8年前的, 《state-thread 官网文档》。 ST 协程优势有以下几点: 1,从性能上来说,ST和传统的EDSM实现几乎一样快。也就是用 ST 跟用 单线程 e...
GAS 是 GNU as 的缩写。Linux 里面 编译汇编程序 有两种方式,一种是 as + ld,另一种是 gcc。下面是汇编代码。 .data output: .ascii "hello,world!\n" len = . - output .text .globl _start _start: movl ...
操作系统内核代码绝大部分使用 C 语言编写,只有一小部分使用汇编语言编写,例如与特定 体系结构 相关的代码和对性能影响很大的代码。 GCC提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计。 代...
几乎每个做应用开发的工程师,学习汇编的时候,都会遇到这样一个困惑,各种汇编书籍,例如《汇编语言 基于x86》《现代x86汇编程序设计》这些书籍都是讲 汇编指令 在单核里面的情况。我们做应用开发的时候是经常用到多线程的,而我们...