state-thread源码分析 归档 - 第2页 共3页 - 弦外之音

好消息:《SRS原理》一书荣获官方推荐,访问地址:https://srs.xianwaizhiyin.net

本文主要讲解,ST 提供的示例程序 server ,make 编译之后,会在 obj 目录生成 server 可执行文件,如下: server 是一个 简单的 http 服务器,访问之后输出一个 简单的 html 页面,使用命令如下: ./obj/server -l ./ -b ...

发布 0 条评论

本文主要讲解,ST 提供的示例程序 proxy ,make 编译之后,会在 obj 目录生成 proxy 可执行文件,如下: proxy 是一个流量代理程序,可以把TCP流量转发给远程服务器,使用命令如下: 用 -X 是只开启一个进程,简单起见,先...

发布 0 条评论

本文 基于 命令./obj/lookupdns www.xianwaizhiyin.net www.baidu.com 做讲解,查询两个个域名。 lookupdns 里面的 do_resolve() 函数前面的执行步奏如下: 本文 主要 讲解 do_resolve() 函数的逻辑,以及它里面使用的 st_...

发布 0 条评论

本文 基于 命令./obj/lookupdns www.xianwaizhiyin.net 做讲解,只查询一个域名。 本文 主要分析 st_thread_exit() 函数的内部实现。请看下图: st_thread_exit() 第一次只会执行 _ST_SWITCH_CONTEXT(thread); 这个代码。...

发布 0 条评论

本文 主要分析 st_thread_create() 函数的内部实现。 st_thread_create 流程图如下: 现在开始一行一行代码分析 st_thread_create _st_thread_t *thread; _st_stack_t *stack; void **ptds; char *sp; 上面...

发布 0 条评论

在上一篇文章《ST源码分析-lookupdns》里,已经通过一个简单的域名查询程序演示了 ST 协程的使用。 本文 主要分析 st_init() 函数的内部实现。 lookupdns 流程图如下: 在讲代码逻辑,流程之前,贴一张主要的数据结构关...

发布 0 条评论

lookupdns 只有 300 行代码,但是却演示了 如何使用 协程 并发请求 dns。 lookupdns 的流程图如下: 编译之后,运行以下命令: ./obj/lookupdns www.xianwaizhiyin.net www.baidu.com 上面两个命令 用协程 查询了两...

发布 0 条评论

C语言中的 goto 实现的是函数内部的跳转,也就是 local jump。但是 C 标准库还有 setjmp() 跟 longjmp() 实现不同函数的跳转。这种不同函数的跳转叫做 long jump。下面就来介绍 C标准库 的 setjmp() 跟 longjmp() 函数的使用。 请...

发布 0 条评论

lookupdns 是 ST 的一个示例程序,由于 ST 是 makefile 的项目,并没有提供 CMake 文件,所以先演示 一下 如何使用 Clion 来调试 Makefile 的项目。 也可以使用 gdb 调试,不过我个人习惯 用 Clion。 注意,Clion 也只是把众多...

发布 0 条评论

项目的核心文件如下图: 在 linux 系统下,执行以下命令即可编译 state-thread 项目 make linux-debug state-thread 库的 编译规则非常简单,不需要过多分析了,主要有以下重点。 重点一: CC = cc ...

发布 0 条评论