Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 套接字上的并行读/写_C++_C_Gcc - Fatal编程技术网

C++ 套接字上的并行读/写

C++ 套接字上的并行读/写,c++,c,gcc,C++,C,Gcc,与多个线程并行地在套接字(SOCK\u STREAM)上写入和读取有意义吗?在Linux上。这些系统调用是否相互阻塞?是的,这很有意义。因为它们位于不同的线程中,所以不会相互阻塞。只要只有一个写入线程和一个读取线程,这是有意义的。如果有多个读卡器线程,则需要锁定读取;如果有多个写卡器线程,则必须锁定写入。在多读卡器或多写卡器的情况下,除了锁定之外,还需要为套接字的另一端明确定义消息边界,以了解所有内容。请注意,send()和recv()不能保证传输您告诉它们的数据量。要说它们是否相互“阻塞”并不

与多个线程并行地在套接字(
SOCK\u STREAM
)上写入和读取有意义吗?在Linux上。这些系统调用是否相互阻塞?

是的,这很有意义。因为它们位于不同的线程中,所以不会相互阻塞。

只要只有一个写入线程和一个读取线程,这是有意义的。如果有多个读卡器线程,则需要锁定读取;如果有多个写卡器线程,则必须锁定写入。

在多读卡器或多写卡器的情况下,除了锁定之外,还需要为套接字的另一端明确定义消息边界,以了解所有内容。请注意,send()和recv()不能保证传输您告诉它们的数据量。要说它们是否相互“阻塞”并不容易——这取决于套接字背后的实现,甚至取决于硬件(想想:全/半双工网络接口)。同意,从系统调用接口的角度来看,他们没有。