This sort  of helps... my question is with respect to UDP sockets, for sendto and 
recvfrom, can I concurrently have two threads at the same time write (sendto) on a 
same file descriptor?  How about readfrom and sendt on the same file descriptor at the 
same time?

Thanks
Lee
----- Original Message -----
From: Stephen Hemminger <[EMAIL PROTECTED]>
Date: Thu, 21 Aug 2003 09:16:49 -0700
To: "Lee Chin" <[EMAIL PROTECTED]>
Subject: Re: is sendto and recvfrom thread safe?

> On Thu, 21 Aug 2003 01:06:45 -0500
> "Lee Chin" <[EMAIL PROTECTED]> 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, ...).

-- 
__________________________________________________________
Sign-up for your own personalized E-mail at Mail.com
http://www.mail.com/?sr=signup

CareerBuilder.com has over 400,000 jobs. Be smarter about your job search
http://corp.mail.com/careers

-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

Reply via email to