in reply to Re: threads: spawn early to avoid the crush.
in thread threads: spawn early to avoid the crush.
Yes. I've been using and describing these techniques here for a 3 years or more, but I am looking for a way to ecapsulate the messy and fiddly business of shared data, access control and the process of spawning 'clean&light' threads into a module with simple interface. I gotten close a couple of times, but there is always something that I haven't found a good way to do
Your example code misses the point. In a nutshell, the problem is
Possible interface:
use threads::lite; my @threads = threads::lite->spawn( 10 ); ... ## Then when I know what I want a thread to do my $Xthread = pop threads; $Xthread->run( \&doX, @Xargs ); .... my @Xresults = $Xthread->join;
Possible interface:
use threads::lite; my $threadFactory = threads::lite->genFactory; .... my( $Xthread ) = $threadsFactory->create( \&doX, @Xargs ); my( $Ythread ) = $threadsFactory->create( \&doY, @Yargs );
Don't take any notice of the module/method names shown. I could care less whether they are camelCase() or hugely_verbose_with_under_scores()--though I have my preferences like others, and I'd prefer that they weren't Hugely_Verbose_With_Camel_Case_And_Underscores() as I've encountered occasionally.
The crux of the matter is how to create light threads (which means early), but use them when I need them; and without having to reinvent the wheel of queues and synchronisation and all that good stuff in every program; and without cloning everything in my current thread into every thread I spawn.
Ie. A simple interface to lightweight, 'only-clone-what-is-needed' threads.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: threads: spawn early to avoid the crush.
by zentara (Cardinal) on Mar 02, 2006 at 20:15 UTC | |
Re^3: threads: spawn early to avoid the crush.
by radiantmatrix (Parson) on Mar 03, 2006 at 16:17 UTC |