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
