LINUX.ORG.RU

История изменений

Исправление Vlad-76, (текущая версия) :

сделал два threads. Объявил хэш. В одной thread пишу в хэш в другой читаю. Но ничего не читается. Как организовать доступ к общему хэшу, данным между threads?

#!/usr/bin/perl

use threads;

my %H_AC =();

threads->create(sub {
   my $c = 0;
   while(1) {
        $c++;
        sleep(1);
        every_01sec_run();
        $H_AC{$c} = $c ;
    }
});

threads->create(sub {

   while(1) {
        sleep(10);
        every_10sec_run();
        print "печать хэша\n";
        for my $key ( keys %H_AC ) {
            my $value = $H_AC{$key};
            print "$key => $value\n";
        }
    }
});

while(1) { # ОСНОВНОЙ ЦИКЛ
    sleep 13;
    print "sleep 13\n";
}

sub every_01sec_run(){
    print "sleep 1\n";

}

sub every_10sec_run(){
    print "sleep 10\n";
}

Исправление Vlad-76, :

сделал два threads. Объявил хэш одном thread пишу в хэш в другом читаю. Но ничего не читается. Как организовать доступ к общему хэшу, данным между threads?

#!/usr/bin/perl

use threads;

my %H_AC =();

threads->create(sub {
   my $c = 0;
   while(1) {
        $c++;
        sleep(1);
        every_01sec_run();
        $H_AC{$c} = $c ;
    }
});

threads->create(sub {

   while(1) {
        sleep(10);
        every_10sec_run();
        print "печать хэша\n";
        for my $key ( keys %H_AC ) {
            my $value = $H_AC{$key};
            print "$key => $value\n";
        }
    }
});

while(1) { # ОСНОВНОЙ ЦИКЛ
    sleep 13;
    print "sleep 13\n";
}

sub every_01sec_run(){
    print "sleep 1\n";

}

sub every_10sec_run(){
    print "sleep 10\n";
}

Исправление Vlad-76, :

сделал два threads. Объявил хэш хэш одним пишу в хэш другим читаю. Но ничего не читается. Как организовать доступ к общему хэшу, данным между threads?

#!/usr/bin/perl

use threads;

my %H_AC =();

threads->create(sub {
   my $c = 0;
   while(1) {
        $c++;
        sleep(1);
        every_01sec_run();
        $H_AC{$c} = $c ;
    }
});

threads->create(sub {

   while(1) {
        sleep(10);
        every_10sec_run();
        print "печать хэша\n";
        for my $key ( keys %H_AC ) {
            my $value = $H_AC{$key};
            print "$key => $value\n";
        }
    }
});

while(1) { # ОСНОВНОЙ ЦИКЛ
    sleep 13;
    print "sleep 13\n";
}

sub every_01sec_run(){
    print "sleep 1\n";

}

sub every_10sec_run(){
    print "sleep 10\n";
}

Исходная версия Vlad-76, :

сделал два threads. Объявил хэш хэш одним пишу в хэш другим читаю. Но ничего не читается. Как организовать доступ к общему хэшу, данным между thread?

#!/usr/bin/perl

use threads;

my %H_AC =();

threads->create(sub {
   my $c = 0;
   while(1) {
        $c++;
        sleep(1);
        every_01sec_run();
        $H_AC{$c} = $c ;
    }
});

threads->create(sub {

   while(1) {
        sleep(10);
        every_10sec_run();
        print "печать хэша\n";
        for my $key ( keys %H_AC ) {
            my $value = $H_AC{$key};
            print "$key => $value\n";
        }
    }
});

while(1) { # ОСНОВНОЙ ЦИКЛ
    sleep 13;
    print "sleep 13\n";
}

sub every_01sec_run(){
    print "sleep 1\n";

}

sub every_10sec_run(){
    print "sleep 10\n";
}