Linux
1
Вклад в тег
#!/usr/bin/env perl
use strict;
use warnings;
use threads;
use threads::shared;
# Создаём расшареную переменную
my @numbers:shared = (1..100);
# Задаём количество потоков
my $threads = shift || 10;
# Создаём потоки и кладём их обекты в массив
my @threads;
for (1..$threads) {
push @threads, threads->new(
sub {
while (@numbers) {
# Достаём данные из массива
# Предварительно заблокировава его для остальных потоков
my $number;
{
# Блокировка работает только в этом скоупе
lock(@numbers);
$number = shift(@numbers);
}
print 'Result: '.($number*10)."\n";
}
}
);
}
# Запускаем потоки привязав их к основному процессу
$_->join for (@threads);