Tor源码分析五 -- 客户端执行流程(基于libevent调度)
发布时间
阅读量:
阅读量
上一源码分析的小节中,已经将系统的主要流程启动过程介绍完毕。实际上,系统在如此启动之后,就可以通过正确的流程将Tor系统完整的启动起来,为用户提供应用程序代理服务,以达到匿名通信的目标。本节的目标,不是为了详细介绍系统初始化后的正确启动流程,而是介绍系统是如何通过Libevent的调度实现成功启动的。也就是说,本节的重点在于说明Libevent调度机制在Tor系统之中的应用。
在上一节中简要概述了 LibEvent 的三种应用场景:信号处理、定时任务处理以及网络套接字管理。这三个应用场景对于 LibEvent 而言均为特定类型的行为,在于它们所涉及的属性与回调函数存在显著差异。通过自身的调度机制及优先级队列等手段,LibEvent对各类事件进行管理。通常情况下,当一个新任务被启动时,系统会自动将其加入到 LibEvent 的 事务集中.值得注意的是,针对不同类型的任务,激活时所采取的方式也会有所不同
当进程响应相应的信号源时会触发挂起的信号处理事件
time轴 - 定时时间轴:当被 hang 起执行的定时处理任务在 timer 设置完成后会立即被唤醒,在创建该定时任务时就预先配置了所需的时间;
socket - 网络套接字处理任务:在挂起状态下进行处理的任务主要包括两种类型:一类是针对存在可读数据的相关操作(read events),另一类则是数据发送的操作(wr
全部评论 (0)
还没有任何评论哟~
