2021.10.30一些已记录
1. cpu cache会加载第一次miss之后的连续内存,所以访问内存尽量连续。
如果工作线程不是很消耗cpu,那么网络线程和工作线程绑定到同一个cpu上,会减少cpu cache同步。如果是消费者线程计算密集,或者低延迟,需要独占cpu,觉得还是分开的好
2.
3.
epoll_wait 之后,如果有个socket不停的有数据到来,缓冲区里有数据,不用触发下一次epoll_wait,可以一直接收数据,那么
1. 如果是多个socket返回数据,一直在接收第一个socket的数据,其他的socket不是没有机会处理
2. socket的缓冲区的数据结构 是怎么样的,怎么保证数据有序 连续等
如果吞吐高,并发也要求的话,应该使用lt,每次最多读定量缓存
4.
水平触发:
当我们关注的事件为读事件时,只要缓存中有东西可读,那么就触发;当我们关注的事件为写事件时,只要缓存中有东西可写那么就触发。
边沿触发:
当我们关注的事件为读事件时:1.当由不可读变为可读时会触发(即BUFFE由空到非空)。2.当可读的内容变多时(即有新的数据到来)会触发。
当我们关注的事件为写事件时:1.由不可写变为可写时会触发(即BUFFE由满变为非满)。2.当buffer中的内容变少时(旧数据被发送走)会触发。