Are your "very good reasons" good enough to justify
using a threading implementation which is experimental and
is known not to be thread-safe?
You haven't said what you are doing, but my strong
recommendation is to use an existing solution, such as
Apache with mod_perl.
As for your problem, the best way I can think of to solve
it with threading is to split the child thread into 2.
One to write back to the client, one to wait a fixed time,
and if the page is still loading send a timeout message
and then close the connection. (The backend work still
gets done either way.) Hope and pray that you don't have
a race between when the sleeper starts writing its timeout
message and when the other thread chooses to finish what
it is doing... | [reply] |
Are your "very good reasons" good enough to justify using a threading implementation which is experimental and is known not to be thread-safe?
Of course ;p I am aware of the threading stability issues, including those affecting non-threaded functionality in the threaded perl interpreter. (Eventually, probably long before perl6 :) that'll become less of an issue.)
Hmmmm, as to your suggestion.... not robust but a good idea. I wonder if i can pass 2 tie()'d filehandles to the client code (replacing STDIN & STDOUT), with explicit functionality to stop the close() from working, replacing it with some cond_wait() on a per-thread scalar.... hmmmm, an async() block cotaining a timer either will or wont have locked that scalar.
Ewwww, it sounds just evil enough to work!
Thanks I'll try :)
| [reply] |