一个写线程,一个读线程在同一个套接字上?
问题描述:
我使用FreeBSD TCP/IP协议栈运行eCos。有两个线程运行一个从套接字读取并且一个写入同一个套接字是安全的吗?一个写线程,一个读线程在同一个套接字上?
那么我猜想,因为它的FreeBSD堆栈操作系统并不重要。
最好的问候,
弗里德里希
答
据我所知,插座是全双工的,这意味着我们可以读出,并在同一时间写入相同的插座。但是,您必须确保一次只有一个阅读器和一个作者。 如果我错了,请纠正我。
你没有错。一个线程可以在另一个线程同时写入的同时进行读取。如果读取多个线程或写入多个线程,则必须手动序列化对该套接字侧的访问以防止重叠。 – 2010-05-13 00:17:14
我有一个问题...假设字节被写入相同的系统调用'write'。在没有内核抢占功能的情况下编译器在单个CPU的机器上编译器可能会重叠? – MirkoBanchi 2013-02-26 16:57:24
@MirkoBanchi我不确定你的问题是什么,但是,如果处理不当,作者可能会重叠。想象一下,你想要在2个独立的线程中发送2个大文件,在套接字上你必须循环write()/ send(),直到完成。 – shinkou 2013-02-28 06:10:44