Server IP : 192.168.23.10 / Your IP : 216.73.216.127 Web Server : Apache System : Linux echo.premieradvertising.com 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 7 14:54:22 EST 2023 x86_64 User : rrrallyteam ( 1049) PHP Version : 8.1.32 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF Directory (0755) : /home/../usr/share/doc/libasyncns/../unzip/../perl-Thread-Queue/examples/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
#!/usr/bin/perl use strict; use warnings; use threads; use Thread::Queue 3.01; # Create a work queue for sending data to a 'worker' thread # Prepopulate it with a few work items my $work_q = Thread::Queue->new(qw/foo bar baz/); # Create a status queue to get reports from the thread my $status_q = Thread::Queue->new(); # Create a detached thread to process items from the queue threads->create(sub { # Keep grabbing items off the work queue while (defined(my $item = $work_q->dequeue())) { # Process the item from the queue print("Thread got '$item'\n"); # Ask for more work when the queue is empty if (! $work_q->pending()) { print("\nThread waiting for more work\n\n"); $status_q->enqueue('more'); } } # Final report print("Thread done\n"); $status_q->enqueue('done'); })->detach(); # More work for the thread my @work = ( [ 'bippity', 'boppity', 'boo' ], [ 'ping', 'pong' ], [ 'dit', 'dot', 'dit' ], ); # Send work to the thread while ($status_q->dequeue() eq 'more') { last if (! @work); # No more work $work_q->enqueue(@{shift(@work)}); } # Signal that there is no more work $work_q->end(); # Wait for thread to terminate $status_q->dequeue(); # Good-bye print("Done\n"); # EOF