
Threaded::shift() 함수를 사용하여 Queue에서 데이터를 꺼낼 때, 데이터가 없을 경우에 발생하는 에러는 undef로 처리됩니다.
예를 들어, 아래와 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
perl
use Thread::Queue;
my $queue = Thread::Queue->new();
my $t1 = threads->create(sub {
while (my $data = $queue->shift()) {
print "Thread 1: $datan";
}
print "Thread 1: Queue가 비었습니다.n"; # 데이터가 없을 경우 undef가 반환되므로 undef를 체크하여 처리할 수 있습니다.
});
my $t2 = threads->create(sub {
for my $i (1..5) {
$queue->enqueue($i);
}
});
$t1->join();
$t2->join();
또한, undef를 체크하여 처리할 수 있습니다.
#hostingforum.kr
perl
use Thread::Queue;
my $queue = Thread::Queue->new();
my $t1 = threads->create(sub {
while (my $data = $queue->shift()) {
print "Thread 1: $datan";
}
print "Thread 1: Queue가 비었습니다.n";
});
my $t2 = threads->create(sub {
for my $i (1..5) {
$queue->enqueue($i);
}
});
$t1->join();
$t2->join();
또한, undef를 체크하여 처리할 수 있습니다.
#hostingforum.kr
perl
use Thread::Queue;
my $queue = Thread::Queue->new();
my $t1 = threads->create(sub {
while (defined(my $data = $queue->shift())) {
print "Thread 1: $datan";
}
print "Thread 1: Queue가 비었습니다.n";
});
my $t2 = threads->create(sub {
for my $i (1..5) {
$queue->enqueue($i);
}
});
$t1->join();
$t2->join();
또한, undef를 체크하여 처리할 수 있습니다.
#hostingforum.kr
perl
use Thread::Queue;
my $queue = Thread::Queue->new();
my $t1 = threads->create(sub {
while (my $data = $queue->shift()) {
print "Thread 1: $datan";
}
print "Thread 1: Queue가 비었습니다.n";
});
my $t2 = threads->create(sub {
for my $i (1..5) {
$queue->enqueue($i);
}
});
$t1->join();
$t2->join();
또한, undef를 체크하여 처리할 수 있습니다.
#hostingforum.kr
perl
use Thread::Queue;
my $queue = Thread::Queue->new();
my $t1 = threads->create(sub {
while (my $data = $queue->shift()) {
print "Thread 1: $datan";
}
print "Thread 1: Queue가 비었습니다.n";
});
my $t2 = threads->create(sub {
for my $i (1..5) {
$queue->enqueue($i);
}
});
$t1->join();
$t2->join();
2025-04-06 11:57