具体情况具体分析吧!如果你的网卡是1000Mb ps,1000兆的网络,1400的UDP包,每秒也就不到10万个包,这个吞吐量下是不是无锁?队列根本没什么区别,瓶颈不会在锁上面。select可能是个问题,说实话,很多年没有在Linux服务端用过select了,都是用epoll的,所以select这属性如何偶不知道,但是一定没有epoll好。
值得注意一下,malloc free memcpy不能用太多了,流量密集型高并发应用忌讳过多操作内存,复制分配释放都会成为瓶颈。比如ublock 的header 和data这俩内存,如果没有内存池,那么malloc 就是至少每秒几十万次的,对应的memcpy也是每秒几十万次,这个比锁?的开销大多了啊。
关于更多的Lock Contention,可以参见glibc 中pthread_mutex_lock的源代码实现,在没有contention的时候,就是一条CAS指令,内核都没有陷入,在contention发生的时候,就选择陷入内核然后睡大觉,嘿嘿,等着某个线程nulock 后被唤醒。(详见Futex )
感谢,尚有不足,敬请斧正
css 渐变代码,页面查看css,展开折叠div css,css p标签的意思,css怎么让img居中,css搜索框都有什么属性,css 自定义表格样式