Name
SPVM::Go::Sync::WaitGroup - Go WaitGroup
Description
Go::Sync::WaitGroup class of SPVM has methods to manipulate waiting count.
Usage
use Go::Sync::WaitGroup;
use Fn;
Go->go(method : void () {
my $wg = Go::Sync::WaitGroup->new;
$wg->add(2);
Go->go([has wg : Go::Sync::WaitGroup = $wg] method : void () {
Fn->defer([has wg : Go::Sync::WaitGroup = $self->{wg}] method : void () {
$self->{wg}->done;
});
});
Go->go([has wg : Go::Sync::WaitGroup = $wg] method : void () {
Fn->defer([has wg : Go::Sync::WaitGroup = $self->{wg}] method : void () {
$self->{wg}->done;
});
});
$wg->wait;
});
Go->gosched;
Fields
count
has count : int;
The count of waiting.
Class Methods
new
static method new : Go::Sync::WaitGroup ();
Creates a new Go::Sync::WaitGroup object.
Instance Methods
add
method add : void ($delta : int = 1);
Adds $delta to the count of waiting.
This method is thread-safe.
Exceptions:
The count field must be greater than or equal to 0. Otherwise an exception is thrown.
done
method done : void ();
Decrements the count of waiting.
The same as
$wait_group->add(-1);
This method is thread-safe.
wait
method wait : void ();
Waits until the count of waiting is 0.
Copyright & License
Copyright (c) 2023 Yuki Kimoto
MIT License