The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Name

SPVM::Go::Channel - Golang Compatible Channel

Description

The Go::Channel class in SPVM has methods to manipulate channels.

Usage

  use Go;
  
  # A non-buffered channel
  my $channel = Go->make;
  
  # A buffered channel
  my $channel = Go->make(3);
  
  # Read channel
  my $ok = 0;
  my $value = $channel->read(\$ok);
  
  # Write channel
  $channel->write($value);

Instance Methods

read

method read : object ($ok_ref : int*);

Reads a value from the channel. If the value is red from a closed channl, undef is returned.

If the channel is closed and any written values do not exist, the value referred by $ok_ref is set to 0, otherwise it is set to 1.

write

method write : void ($value : object);

Writes a value to the channel. If the buffer is full, this method blocks until the value is red or there is free buffer space.

Exceptions:

If this channel is closed, an exception is thrown.

close

method close : void ();

Closes the channel. A closed channel cannot be writen.

Exceptions:

If this channel is already closed, an exception is thrown.

cap

method cap : int ();

Gets the buffer capacity of the channel.

len

method len : int ();

Gets the length of the values in the buffer.

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License