高级并行性:线程池、并行迭代器和进程
1. 线程池
线程池是由之前讨论的组件构建而成的。如果要创建一个无队列的线程池,可以在执行逻辑中添加额外的检查。部分顺序一致的原子操作或许可以放宽,尽管这可能会让简单实现的推理变得更具挑战性。若执行的任务非常短暂,为了性能提升,这样做或许是值得的。
2. 以太网嗅探器
2.1 项目概述
我们将创建两个二进制文件:一个易出现线程过载的 poor_threading ,另一个是不会出现该问题的 sniffer 。其目标是嗅探网络接口上的以太网数据包,交换数据包的源和目标头信息,并将修改后的数据包发送回原始源。同时,收集所捕获数据包的摘要统计信息。
2.2 依赖库
项目仅引入了 pnet 依赖。 libpnet 是一个底层数据包操作库,可用于构建网络实用工具或原型传输协议。
2.3 poor_threading 实现
2.3.1 前置声明
extern crate pnet;
use pnet::datalink::Channel::Ethernet;
use pnet::datalink::{self, DataLinkReceiver, DataLinkSender, MacAddr, NetworkInterface};
use pnet::packet::ethernet::{EtherType,
超级会员免费看
订阅专栏 解锁全文
5

被折叠的 条评论
为什么被折叠?



