in reply to Re^9: Slow evolution of Perl = Perl is a closed Word (thread decade)
in thread Slow evolution of Perl = Perl is a closed Word
1. $obj->startLongOrBlockingProcess() 2. $obj->isProcessComplete() 3. $obj->getProcessResults()
With current ithreads implementation, this solution is not as elegant as it could seem. Creating a new thread can be a very expensive operation (in terms of both CPU and memory) that depends on the in-memory size of the runtime. So you can not pretend that threading business are completely hidden behind your class API.
I have this problem when porting Net::SFTP::Foreign to Windows: I needed to do non-blocking IO on a pipe, but windows only supports select on sockets. Using threads to handle IO would be the best alternative (one thread for reading from the pipe and other for writting), but I found it unacceptable because I knew nothing about the caller. For instance it could be a program using 500MB of RAM, and starting the two new threads would triplicate that!!!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^11: Slow evolution of Perl = Perl is a closed Word (thread decade)
by BrowserUk (Patriarch) on Sep 04, 2007 at 09:04 UTC | |
by salva (Canon) on Sep 04, 2007 at 16:53 UTC | |
by tye (Sage) on Sep 04, 2007 at 17:38 UTC | |
by BrowserUk (Patriarch) on Sep 05, 2007 at 00:55 UTC |