Sockets 套接字操作是否在系统级并行执行?
如果我有一个四核机器和4个开放的活动插槽,那么让4个线程并行读取这些插槽,还是让一个线程迭代读取这些插槽,速度更快?套接字读取操作可以并行执行,还是在系统级的某个位置同步 类似地,如果我有4个套接字需要向其中写入一些数据,那么让4个线程同时向这些套接字写入数据会更快,还是让一个线程完成所有写入操作会更好 似乎多核应该能够实现更高的吞吐量(当然,如果网络带宽不是瓶颈的话),但是我想知道是否是这样,因为毕竟,最终只有一根以太网线(或其他介质),所以在某个时候,所有这些写操作都必须同步,数据包将按顺序发送 具体地说,如果我有一台运行n个线程的机器,这些线程生成需要发送到另一台机器的请求,那么打开n个套接字并让每个线程向其写入是否更好?还是同步所有线程并通过单个套接字发送所有数据更好?Sockets 套接字操作是否在系统级并行执行?,sockets,tcp,io,Sockets,Tcp,Io,如果我有一个四核机器和4个开放的活动插槽,那么让4个线程并行读取这些插槽,还是让一个线程迭代读取这些插槽,速度更快?套接字读取操作可以并行执行,还是在系统级的某个位置同步 类似地,如果我有4个套接字需要向其中写入一些数据,那么让4个线程同时向这些套接字写入数据会更快,还是让一个线程完成所有写入操作会更好 似乎多核应该能够实现更高的吞吐量(当然,如果网络带宽不是瓶颈的话),但是我想知道是否是这样,因为毕竟,最终只有一根以太网线(或其他介质),所以在某个时候,所有这些写操作都必须同步,数据包将按顺序
在接收端,最好有一个单独的插座来读取数据?还是让n个套接字并行读取更好?如果所有读卡器在读取后都需要同步,该怎么办?套接字操作基本上与应用程序异步;缓冲的;而且,如果幸运的话,内核内部是并发的:唯一需要同步的重要状态是每个连接。然而,速率决定步骤实际上是网络的带宽,即使只有一个线程,也很容易使其饱和。Web浏览器通常在每个网页上打开4到8个线程,以获取HTML本身和图像等。套接字操作在很大程度上与应用程序是异步的;缓冲的;而且,如果幸运的话,内核内部是并发的:唯一需要同步的重要状态是每个连接。然而,速率决定步骤实际上是网络的带宽,即使只有一个线程,也很容易使其饱和。Web浏览器通常在每个网页上打开4到8个线程,以获取HTML本身和图像等