Scroll to navigation

dnsjit.core.channel(3) Library Functions Manual dnsjit.core.channel(3)

NAME

dnsjit.core.channel - Send data to another thread

SYNOPSIS


local chan = require("dnsjit.core.channel").new()
local thr = require("dnsjit.core.thread").new()
thr:start(function(thr)
local chan = thr:pop()
local obj = chan:get()
...
end)
thr:push(chan)
chan:put(...)
chan:close()
thr:stop()

DESCRIPTION

A channel can be used to send data to another thread, this is done by putting a pointer to the data into a wait-free and lock-free ring buffer (concurrency kit). The channel uses the single producer, single consumer model (SPSC) so there can only be one writer and one reader.

Attributes

Is 1 if the channel has been closed.

Functions

Create a new Channel, use the optional capacity to specify the capacity of the channel (buffer). Capacity must be a power-of-two greater than or equal to 4. Default capacity is 2048.
Return the Log object to control logging of this instance or module.
Return information to use when sharing this object between threads.
Put an object into the channel, if the channel is full then it will stall and wait until space becomes available. Object may be nil.
Try and put an object into the channel. Returns 0 on success.
Get an object from the channel, if the channel is empty it will wait until an object is available. Returns nil if the channel is closed or if a nil object was explicitly put into the channel.
Try and get an object from the channel. Returns nil if there was no objects to get.
Return number of enqueued objects.
Returns true when channel is full.
Close the channel.
Return the C functions and context for receiving objects.
Set the receiver to pass objects to. NOTE; The channel keeps no reference of the receiver, it needs to live as long as the channel does.
Retrieve all objects from the channel and send it to the receiver.

SEE ALSO

dnsjit.core.thread(3)

AUTHORS and CONTRIBUTORS

Jerry Lundström (DNS-OARC), Tomáš Křížek (CZ.NIC), Petr Špaček (ISC)

Maintained by DNS-OARC

BUGS

For issues and feature requests please use:

For question and help please use:

admin@dns-oarc.net
1.3.0 dnsjit