in reply to Re: Testing methodology
in thread Testing methodology
Why would you not use Thread::Conveyor?
Because I know better. Why are you suggesting it when you obviously do not?
I was asked to update this to explain my reasoning, so here it is:
Thread::Conveyor doesn't work. It isn't thread-safe.
Don't believe me, try it for yourself! I'll even provide the test script for you:
#! perl -slw use strict; use threads ( stack_size => 4096 ); use Thread::Conveyor; my $belt = Thread::Conveyor->new( { maxboxes => 50, minboxes => 25, optimize => 'memory', # or 'cpu' }); async{ print while defined( $_ = $belt->take ); }->detach; $belt->put( $_ ) for 1 .. 10; $belt->put( undef );
Nine times out of ten this will segfault with;
Problem signature: Problem Event Name: APPCRASH Application Name: perl.exe Application Version: 5.10.1.1007 Application Timestamp: 4b60ba96 Fault Module Name: perl510.dll Fault Module Version: 5.10.1.1007 Fault Module Timestamp: 4b60ba95 Exception Code: c0000005 Exception Offset: 000000000006c6f8 OS Version: 6.0.6001.2.1.0.768.3 Locale ID: 2057 Additional Information 1: 90e0 Additional Information 2: e939a93db866b76af40148e39e07fd0d Additional Information 3: 85c4 Additional Information 4: 6c632c487ffa8e4b9b7137dbbbe72313
On the 10th occasion it will emit the following before hanging:
C:\test>t-TCcrap 1 2 3 4 5 6 7 8 Thread 1 terminated abnormally: Can't use an undefined value as an ARR +AY reference at C:/Perl64/site/lib/Thread/Tie/Array.pm (loaded on dem +and from offset 1939 for 176 bytes) line 75. Terminating on signal SIGINT(2)
And if you trace the run you get:
<Reveal this spoiler or all in this thread>
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Testing methodology
by duelafn (Parson) on Mar 05, 2012 at 17:33 UTC | |
by BrowserUk (Patriarch) on Mar 06, 2012 at 02:59 UTC |
In Section
Meditations