ST源码分析-协程局部变量
《ST源码分析-st_thread_create》跟 《ST源码分析-内存保护》两篇文章,讲解了,协程函数的栈内存就是下图的区域,如下: google_ads_content 下面就来验证一下协程函数的局部变量是不是真的存储到这块内存区域。...
《ST源码分析-st_thread_create》跟 《ST源码分析-内存保护》两篇文章,讲解了,协程函数的栈内存就是下图的区域,如下: google_ads_content 下面就来验证一下协程函数的局部变量是不是真的存储到这块内存区域。...
st_thread_create() 创建协程的时候,会调 _st_stack_new() 来申请一块内存,_st_stack_new() 里面额外申请了 2*REDZONE 的内存,在我的电脑上 一个 REDZONE 是 4096 字节。这个 两个 REDZONE 是一个在栈顶,一个在栈底。 ,如下...
《SRS原理》上架了,深度剖析 SRS 源代码,访问地址:srs.xianwaizhiyin.net 本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 由于 SRS 主要使用的 是 state-thread 协程库,这个库是 8年前的, 《state-thread 官...
本文主要讲解, 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 是只开启一个进程,简单起见,先...