Re: is sendto and recvfrom thread safe?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 21 Aug 2003 01:06:45 -0500
"Lee Chin" <leechin@mail.com> wrote:

> Hi,
> If I have a global socket file descriptor, can I call sendto and recvfrom on that file descriptor concurrently with out using semaphores around the call to sendto and recvfrom?
> 
> What about for TCP sockets?
> 
> Thanks
> Lee

It depends on your definition of thread safe.
Sendto and recvfrom are for UDP which is a datagram protocol; therefore
each call sends and receives a separate data unit.  The application protocol
has to be atomic to work with UDP anyway. Your application has to deal
with out of order, and dropped packets.

If you use TCP sockets with threaded applications you better do application
level locking per socket and have enough information in your protocol to describe
the length of each operation.  TCP is a byte stream, and with multiple threads sending
it is possible to "mix the streams".  Multiple threads reading will get out of
order data.

This is true of all OS's that I know about that support threads 
(Windows, Solaris, Linux, ...).
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux