交易所协议解析:并发与线程安全实战
📚 共计 30 章节
01
协议解析的并发模型:从单线程到多线程
为什么交易所协议解析需要并发?
并发模型
协议解析
02
GIL锁的真相:Python多线程表现差异
IO密集型与CPU密集型任务中的表现差异
GIL
多线程
03
线程安全基础:竞态条件、临界区、原子操作
概念与识别
线程安全
原子操作
04
锁机制入门:threading.Lock
使用场景与常见陷阱
Lock
互斥锁
05
可重入锁与死锁:RLock
以及我在项目中遇到的一次死锁排查经历
RLock
死锁
06
条件变量与事件:Condition & Event
在协议握手中的应用
条件变量
事件
07
信号量(Semaphore):控制并发连接数
防止交易所风控封IP
Semaphore
限流
08
线程间通信:queue.Queue
安全传递解析后的订单数据
Queue
通信
09
线程池与concurrent.futures
管理大量WebSocket连接的最佳实践
线程池
WebSocket
10
全局解释器锁(GIL)的绕过:多进程
使用多进程处理CPU密集型的行情计算
多进程
GIL
11
进程间通信(IPC):Queue与Pipe
multiprocessing.Queue与Pipe在协议解析中的应用
IPC
进程
12
共享内存与同步:Value、Array与Manager
跨进程数据共享中的坑
共享内存
Manager
13
异步IO入门:asyncio事件循环与协程
为什么它适合网络协议解析?
asyncio
协程
14
async/await实战:重写行情订阅客户端
用asyncio重写一个简单的行情订阅客户端
async/await
客户端
15
异步锁与同步原语:asyncio.Lock、Semaphore
在协程中的正确用法
异步锁
Semaphore
16
异步队列:asyncio.Queue
在生产者-消费者模式中的妙用
异步队列
生产者-消费者
17
协程与线程的混合编程:run_in_executor
解决阻塞调用问题
混合编程
run_in_executor
18
无锁数据结构:atomicwrites库
实现无锁的日志写入
无锁
atomicwrites
19
读写锁:ReadWriteLock
在行情快照与增量更新中的性能优化
读写锁
性能
20
屏障(Barrier):多路行情源同步对齐
时间戳校准
Barrier
同步
21
定时器与超时处理:Timer & wait_for
threading.Timer与asyncio.wait_for在心跳检测中的实现
定时器
超时
22
上下文管理器与锁:with语句
优雅管理锁的生命周期
上下文管理器
with
23
线程局部存储(ThreadLocal)
每个连接独立的会话状态管理
ThreadLocal
会话
24
并发调试与日志:logging模块
线程安全配置与追踪ID注入
logging
调试
25
性能剖析:cProfile与line_profiler
定位并发瓶颈
性能
cProfile
26
压力测试:locust模拟千级并发
测试协议解析吞吐量
压测
locust
27
常见并发Bug模式:ABA、活锁、饥饿
识别与修复
Bug
活锁
28
设计模式:生产者-消费者、Reactor、Proactor
在协议解析中的应用
设计模式
Reactor
29
实战案例一:多线程FIX协议解析引擎
设计与实现
FIX
实战
30
实战案例二:asyncio WebSocket行情推送
支持万级订阅
WebSocket
高并发