403Webshell
Server IP : 112.74.42.100  /  Your IP : 216.73.216.142
Web Server : nginx/1.20.2
System : Linux iZwz96lx4pjqiy84w4hni7Z 5.10.134-17.3.al8.x86_64 #1 SMP Thu Oct 31 14:29:57 CST 2024 x86_64
User : www ( 1000)
PHP Version : 8.0.26
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/doc/perl-Thread-Queue/examples/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/doc/perl-Thread-Queue/examples/queue.pl
#!/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

Youez - 2016 - github.com/yon3zu
LinuXploit