Tor的源码分析:CpuWorker
发布时间
阅读量:
阅读量
众所周知,在面对高强度负载时 Tor 服务器会采取相应的措施以保证服务正常运转
简要说明Cpuworker的存在目标是为了通过线程池机制来分担Tor主进程所承受的压力,在TOR接收CREATE请求的时候为该请求计算相应的对称密钥。以下将详细阐述这一过程的具体实现步骤
在系统启动阶段基于处理器核心数创建cpuWorker线程池// 在Linux中
cpuworkers_rotate()
1.1 根据配置文件配置选项,自适应地检测CPU数量或固定设置CPU数量;
spawn_enough_cpuworkers()
1.2 根据CPU数量,开启cpuworker线程;(最大数目为16,最小数目为1)
spawn_cpuworker()
在开启线程之前,建立sockpair,并生成一个cpuworker连接,并将其绑定到sockpair[0]。
1.4 开启线程之时,设置线程执行函数cpuworker_main,关联线程与sockpair[1];
1.5 启动该线程后,在系统中将cpuworker连接纳入系统连接池,并在此线程与Tor主进程之间的通信模式采用sockpair方案(如同socket类型的读写机制);
2. 在成功完成以上操作之后,系统达到如下效果:
当Tor主进程接收到某主机发来的CREATE包时
assign_onionskin_
全部评论 (0)
还没有任何评论哟~
