ST源码分析-st_thread_join
本文主要讲解, st_thread_join() 函数的使用 ,参考文档《st_thread_join》。下面用一个小的示例代码,演示一下 st_thread_join() 函数 的使用。 #include <stdio.h> #include <memory.h> #include "st.h"...
本文主要讲解, st_thread_join() 函数的使用 ,参考文档《st_thread_join》。下面用一个小的示例代码,演示一下 st_thread_join() 函数 的使用。 #include <stdio.h> #include <memory.h> #include "st.h"...
ST 库的协程阻塞函数如下: 如上图,阻塞函数 st_poll(),st_usleep(),st_mutex_lock() 等等,这些函数的返回值都有可能是 -1,被中断了。本文主要讲解这样中断什么情况会发生。请看下图: 如上图所示,每个阻塞函数...
在讲解之前,推荐阅读 State-thread 的官方文章,每个函数的使用在文档都有讲解。《State-thread函数使用文档》 在 Linux 系统使用 多线程的时候,线程间通信,可以使用 条件变量 以及 互斥锁。例如 线程 A 是生产者,不断写入任...
由于 ST 库是单线程程序,如果使用了 unistd.h 里面的 sleep() 或者 usleep() 函数,就会阻塞所有协程函数的执行。但是有时候,某个协程确实要 sleep 休眠一些时间,那怎么办? ST 库提供了 st_usleep() 函数,使用这个函数,就可...
在文章《ST源码分析-st_thread_exit》分析 lookupdns 的时候,当时没有仔细讲解 lookupdns 的退出处理。主要有两个退出处理。 1,do_resolve() 普通协程函数的退出处理。 2,main(),始祖协程函数的退出处理。 google_a...
本文主要讲解,ST 提供的示例程序 server ,make 编译之后,会在 obj 目录生成 server 可执行文件,如下: server 是一个 简单的 http 服务器,访问之后输出一个 简单的 html 页面,使用命令如下: ./obj/server -l ./ -b ...
本文主要讲解,ST 提供的示例程序 proxy ,make 编译之后,会在 obj 目录生成 proxy 可执行文件,如下: proxy 是一个流量代理程序,可以把TCP流量转发给远程服务器,使用命令如下: 用 -X 是只开启一个进程,简单起见,先...
本文 基于 命令./obj/lookupdns www.xianwaizhiyin.net www.baidu.com 做讲解,查询两个个域名。 lookupdns 里面的 do_resolve() 函数前面的执行步奏如下: 本文 主要 讲解 do_resolve() 函数的逻辑,以及它里面使用的 st_...
本文 基于 命令./obj/lookupdns www.xianwaizhiyin.net 做讲解,只查询一个域名。 本文 主要分析 st_thread_exit() 函数的内部实现。请看下图: st_thread_exit() 第一次只会执行 _ST_SWITCH_CONTEXT(thread); 这个代码。...
CPU提供了 EFLAGS 寄存器来保存一些 进位, 溢出,奇偶校验,等等状态。在 32 位模式下 EFLAGS 是一个 32 位的寄存器,在 64 位模式下 就会变成 RFLGAS, 高32位被保留,而低32位则与 EFLAGS 寄存器相同。所以 无论是 32位还是 64...