Setting the socket non-blocking doesn't allow the socket to be read and written concurrently. What it does do, is allow you to determine whether there is anything available to be read, and only read when there is.
That is, instead of your main thread blocking on the socket read waiting for something to arrive, thereby stopping the other thread from writing to the socket. You need to re-write the code so that the main thread blocks on some other mechanism until it knows that there is data available to be read, and only then enter a read when it know it will return immediately. In this way, the other thread will always be able to write except for a brief period while the main thread is reading.
The appropriate blocking mechanism is the can_read() method from IO::Select.
But be warned, you will also need to use recv or sysread and perform the line buffering yourself.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.