清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>> 
                    
#!/usr/bin/perl
use threads;
use threads::shared;
use Thread;
use Thread::Queue;
use POSIX;
my %chat_ans_map = (
        "Hello"        =>"Hithere",
        "Who"        =>"I'm a thread.My name is ",
        "old"        =>"Not as old as yesterday!",
        "slaved"        =>"If you compete with a slave, you'll become one",
        "lonely"        =>"Lonely is my middle name and I can't shake it off!",
        "sorry"        =>"That's alright! You are a thread too, aren't you? I'm not alone!",
         "hehe"        =>"hehe :D",
         "Where"           =>"A place set with oak and cedar tree, somewhere between nowhere and goodbye",
         "Byebye"          =>"Take care!"
);
my %chat_map = (
        "0"        =>"Hello",
        "1"        =>"Who is this speaking ?",
        "2"        =>"Wow.Same here! How old are you ?",
        "3"        =>"How do you like being slaved to do things incessantly?",
        "4"        =>"I'm sorry to hear that!",
           "5"        =>"Indeed! Are you feeling lonely out there running 24/7?",
           "6"          =>"hehe",
           "7"          =>"Where are you running now?",
        "8"        =>"Hmmm...Byebye",
        "9"          =>"END"
);
my $chat_ask_queue = Thread::Queue->new();
my $chat_ask = threads->new(\&chat_ask,"Thread_A",Thread->self());
my $chat_ans = threads->new(\&chat_ans,"Thread_B",Thread->self());
$chat_ask->join();
$chat_ans->join();
sub chat_ask {
        my ($name,$selfid) = @_;
        my $index = 0;
        while (1) {
                sleep 5;
                last if ($chat_map{$index} =~/END/);
                my $content = getTime()." ".$name.": ".$chat_map{$index};
                $chat_ask_queue->enqueue($content);
                $index++;
                print "$content\n";
        }
}
sub chat_ans {
        my ($name,$selfid) = @_;
        while (my $feedback = $chat_ask_queue->dequeue()){
                sleep 2;
                my $answer = match_ans($feedback);
                my $content;
                $content = getTime()." ".$name.": ".$answer;
                $content = $content.$selfid if ($feedback =~/Who/);
                print "$content\n";
                last if ($feedback =~/Byebye/);
        }
}
sub match_ans {
                my $incoming_msg = $_[0];
                foreach my $tmp (keys %chat_ans_map) {
                        if($incoming_msg =~/$tmp/) {
                                return $chat_ans_map{$tmp};
                        }
                }
                return $chat_ans_map{(keys %chat_ans_map)[-1]};
}
=cut
sub exit_all {
        my @thread_list = threads->list();
        foreach my $tmp (@thread_list)        {
                $tmp->join();
        }
}
=cut
sub getTime {
    my $timestamp=time;
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($timestamp);
    my $m = $mon +1;
    my $ret = $m."-".$mday." ".$hour.":".$min.":".$sec;
    return $ret;
}
    								                        		                        												