diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-08-19 00:23:02 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-08-19 00:23:02 -0400 |
| commit | 67e8f2dea0d4eec20a839d47f1fa6302a4a5f733 (patch) | |
| tree | 3f9d28687b6ac824b5676c963ef9964ac4857c4a /api/channels.md | |
| parent | 8363d53bd27c621cb342fea15736a3b11231f2a4 (diff) | |
Move docs into one folder
Diffstat (limited to 'api/channels.md')
| -rw-r--r-- | api/channels.md | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/api/channels.md b/api/channels.md deleted file mode 100644 index 88cb46ff..00000000 --- a/api/channels.md +++ /dev/null @@ -1,181 +0,0 @@ -# Channels - -Channels are a thread-safe message queue for communicating between threads, -although they can also be used as a general-purpose queue. - -## Syntax - -The syntax to create a channel is `|:T|`, where `T` is the type that will be -passed through the channel. You can also specify a maximum size for the -channel, which will cause giving to block until the recipient has gotten from -the channel if the maximum size is reached. - -```tomo -channel := |:Int| -channel:give(10) -channel:give(20) ->> channel:get() -= 10 ->> channel:get() -= 20 - -small_channel := |:Int; max_size=5| -``` - -## Channel Methods - -### `give` - -**Description:** -Adds an item to the channel. - -**Usage:** -```markdown -give(channel:|T|, item: T, where: Where = Where.End) -> Void -``` - -**Parameters:** - -- `channel`: The channel to which the item will be added. -- `item`: The item to add to the channel. -- `where`: Where to put the item (at the `Start` or `End` of the queue). - `Anywhere` defaults to `End`. - -**Returns:** -Nothing. - -**Example:** -```markdown ->> channel:give("Hello") -``` - ---- - -### `give_all` - -**Description:** -Adds multiple items to the channel. - -**Usage:** -```markdown -give_all(channel:|T|, items: [T], where: Where = Where.End) -> Void -``` - -**Parameters:** - -- `channel`: The channel to which the items will be added. -- `items`: The array of items to add to the channel. -- `where`: Where to put the items (at the `Start` or `End` of the queue). - `Anywhere` defaults to `End`. - -**Returns:** -Nothing. - -**Example:** -```markdown ->> channel:give_all([1, 2, 3]) -``` - ---- - -### `get` - -**Description:** -Removes and returns an item from the channel. If the channel is empty, it waits until an item is available. - -**Usage:** -```markdown -get(channel:|T|, where: Where = Where.Start) -> T -``` - -**Parameters:** - -- `channel`: The channel from which to remove an item. -- `where`: Where to get the item from (from the `Start` or `End` of the queue). - `Anywhere` defaults to `Start`. - -**Returns:** -The item removed from the channel. - -**Example:** -```markdown ->> channel:peek() -= "Hello" -``` - ---- - -### `peek` - -**Description:** -Returns the next item that will come out of the channel, but without removing -it. If the channel is empty, it waits until an item is available. - -**Usage:** -```markdown -peek(channel:|T|, where: Where = Where.Start) -> T -``` - -**Parameters:** - -- `channel`: The channel from which to remove an item. -- `where`: Which end of the channel to peek from (the `Start` or `End`). - `Anywhere` defaults to `Start`. - -**Returns:** -The item removed from the channel. - -**Example:** -```markdown ->> channel:get() -= "Hello" -``` - ---- - -### `clear` - -**Description:** -Removes all items from the channel. - -**Usage:** -```markdown -clear(channel:|T|) -> Void -``` - -**Parameters:** - -- `channel`: The mutable reference to the channel. - -**Returns:** -Nothing. - -**Example:** -```markdown ->> channel:clear() -``` - ---- - -### `view` - -**Description:** -Returns a list of all items currently in the channel without removing them. - -**Usage:** -```markdown -channel:view() -> [T] -``` - -**Parameters:** - -- `channel`: The channel to view. - -**Returns:** -An array of items currently in the channel. - -**Example:** -```markdown ->> channel:view() -= [1, 2, 3] -``` |
