Advertisement

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)

还没有任何评论哟~