有几个套接字问题,找不到明确的是或否,所以如果是转发,请提前道歉:) 平台是 Linux 2.6.30,C++ 应用程序。对网络还是很陌生,要跟上速度。
套接字 API 线程安全吗?例如,如果我在不使用互斥锁的情况下从多个线程进行发送,或者我必须通过使用自己的互斥锁来确保这一点?
轮询/选择以检查我的发送是否会阻塞然后进行发送,而不是仅进行发送并让发送 API 内部排队处理发送是否更好?如果线程无论如何都会阻塞(如果我不使用超时,也就是说),我真的不明白为什么需要轮询然后发送。
Linux中默认情况下套接字是零副本,还是涉及副本?如果有副本,是否有大小限制(不是在 API 方面,而是在粒度方面)?如果答案是内核确实进行了复制,是否存在零复制套接字?
如果我必须在两台机器之间进行通信,我会假设多个套接字会比单个套接字更好地利用带宽。这是一个正确的假设吗?在两台常规 Linux 机器之间使用完整 BW 的最佳方式是什么?
5.你最喜欢测量接口当前带宽使用情况的工具是什么?这可能只是更多的偏好,我查看了 iptraf 等,但想看看其他人使用什么和最喜欢什么。