[Top][All Lists]

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

Re: [lwip-users] Socket read/write and threads

From: Yoav Nissim
Subject: Re: [lwip-users] Socket read/write and threads
Date: Mon, 11 Jan 2010 15:55:00 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20091204 Thunderbird/3.0

Is the half duplex limitation only a socket implementation issue? other than the missing locks, what else is missing? using the netconn API seems to result in the same problem.
Isn't the TCPIP thread performing operations one at a time anyway?

I'm sorry. I tried thinking about this for a while but the only way I could produce any helpful code here is if I throw myself into actually coding and testing it... my boss would not like that I imagine   :)
Are you working with existing vnc server code that uses two threads, or are you writing the code yourself?
If you have existing code, maybe you should try serializing the send and receive operations with a separate thread using select as I've suggested earlier.
If you are writing your own code, could you clarify why a single thread (not the main) using select and doing all Rx and Tx would not work?


On 11/01/10 11:33 AM, Nicolas Pinault wrote:

Simon Goldschmidt a écrit :
2. Keep Rx and Tx threads locked and waiting on a select running in
another thread (in essence adding the locking mechanism that lwIP does
not support)

The idea is good, but it's not what lwIP doesn't support, since you don't get full duplex but mutual exclusion for read & write. Full duplex would allow simultaneously sending and receiving on the wire. However, that's the best you can get, currently, when using sockets.

My problem is not to simultaneously receive and transmit data.
My problem is that I have an application that receives data and transmit data asynchronously.
My application is a vnc server.
Vnc server receives data from client when, for example, the user moves the mouse or hits keys.
Vnc server sends screen content to client when needed.
The client can request the server to force send screen content. In this case, no problem.
But vnc server can also need to send screen content while nothing is received.
Two threads are ideal in this situation. One for receiving commands and one for sending screen content.

I can't see any other solution than using select with a short timeout.



_______________________________________________ lwip-users mailing list address@hidden http://lists.nongnu.org/mailman/listinfo/lwip-users

Yoav Nissim
Software Engineer, Software Tools Division
Jungo Software Technologies
Email: address@hidden
Web: http://www.jungo.com
Phone: +972-74-7212138
Fax: +972-74-7212122
Mobile: +972-54-2271315

reply via email to

[Prev in Thread] Current Thread [Next in Thread]