Skip to content

Modern Chan Channel TrySend

Paul Squires edited this page Oct 19, 2026 · 5 revisions

Home › Goroutines and Channels › Goroutines and Channels › TrySend

TrySend

Sends a value only if it can go at once; returns false if it would have to wait.

Syntax

TrySend( byref v as T ) as boolean

Notes

  • FALSE means "not now": the buffer is full, or no receiver is waiting on a rendezvous channel. It does not mean closed -- like Send, this raises on a closed channel.
  • The value is only consumed when the call succeeds.
  • Use it for a drop-on-overload path, where blocking would be worse than losing the item.

Examples

#import "std/tasks"
using tasks

dim ch as Channel( of int32 ) = Channel( of int32 )( 1 )

dim as int32 a = 1, b = 2
print ch.TrySend( a )        '' true
print ch.TrySend( b )        '' false -- the buffer is full, and it did
                             '' NOT wait

'' A drop-on-overload producer, which a blocking Send cannot express
if ch.TrySend( b ) = false then print "dropped"

Library: Goroutines and Channels
Category: Goroutines and Channels
Documented under: Members

Clone this wiki locally