0.09 30 August 2002
Changed all modules to use AutoLoader to defer loading of necessary
subroutines to when they are actually needed. This should save
memory and CPU for larger programs, or with large numbers of threads.
The test-suite only marginally takes more memory at the same CPU
usage: overhead of compiling is levelled out with the overhead of
cloning pre-compiled routines.
0.08 20 August 2002
Dave Mitchell showed me the error of my ways with regards to client
server thread programming. Fixed the handler optimized for memory so
that no yield()s are necessary anymore. The whole thing now gets
through the test suite more than 25% faster for that part.
Scalability to many more threads should now be a lot better too.
0.07 14 August 2002
Removed (possibly premature) optimization from T::C::Thread
_handler: it now doesn't zap the local threadspace anymore.
0.06 13 August 2002
Handed over freezing and thawing operations to Thread::Serialize.
Added dependency to Thread::Serialize in Makefile.PL.
0.05 6 August 2002
Fixed "onbelt" in T::C::Thread so that it won't hang if the belt is
shut down. Needed for Thread::Pool and in general useful.
5 August 2002
Added index functionality to "peek" and "peek_dontwait" to all
sub-classes and added documentation for it. Needed for Thread::Pool.
Finally got the T::C::Thread implementation getting through the
test-suite reliably. Problem was caused by my misconception that
cond_wait would always regain the lock() after being signalled. It
does not. This should have been in big red letters in the
threads::shared pod.
Added methods "shutdown", "thread" and "tid" plus documentation.
3 August 2002
Adapted test-suite to use many more combinations of possible
settings.
2 August 2002
Added new "optimize" field parameter to allow you to select an
implementation optimized for speed (T::C::Array and T::C::Throttled)
or for memory (T::C::Thread).
Added new implementation of Thread::Conveyor based on using a
seperate thread for keeping the belt: Thread::Conveyor::Thread.
Move basic parts of Thread::Conveyor to Thread::Conveyor::Array.
Which should allow for other implementations of the conveyor
metaphor.
0.04 1 August 2002
Added internal method "_belt" to get at the actual belt, for both
the normal and the throttled belt.
0.03 31 July 2002
Added internal methods "_freeze" and "_thaw" so that we can move
to a different serialization scheme or other optimizations without
having to change all the sub-classes as well. First user is
Thread::Conveyor::Monitored.
Added "maxjobs" and "minjobs" method in Thread::Conveyor that will
die when they're called (throttling only takes place in
Thread::Conveyor::Throttled).
Fixed problem that would cause throttling to not be switched off
when the "maxjobs" method was specified with an undef value.
Added methods "clean" and "clean_dontwait" for cleaning the belt
to both Thread::Conveyor and Thread::Conveyor::Throttled. Also
added documentation for it.
Added internal method "_clean" for obtaining frozen contents of
the belt to both Thread::Conveyor and Thread::Conveyor::Throttled.
This was needed for Thread::Conveyor::Monitored.
0.02 30 July 2002
Adapted Thread::Conveyor to default to a throttled conveyor belt
automatically if no specific parameters specified. Now allows for
specification of throttling settings in a parameter hash reference.
If unthrottling is specifically specified, returns to the old
unthrottled behaviour (where the object is just an array reference),
thus keeping the old execution speed.
Added helper class Thread::Conveyor::Throttled to allow for throttled
conveyor belts that block if there are too many boxes on the belt.
Fixed some documentation nits.
0.01 25 July 2002
First version of Thread::Conveyor, which started life as
Thread::Queue::Any.