libdill: Structured Concurrency for C


chsend - send a message to a channel


#include <libdill.h>

int chsend(int ch, const void *val, size_t len, int64_t deadline);


Sends a message to a channel. The first parameter is a channel handle. The second one points to a buffer that contains the message to send. The third parameter is the size of the buffer.

The size of the buffer must match the size of the elements stored in the channel as supplied to the chmake function.

If there's no receiver for the message, the function waits until one becomes available or until the deadline expires.

deadline is a point in time when the operation should time out. Use the now() function to get your current point in time. 0 means immediate timeout, i.e., perform the operation if possible or return without blocking if not. -1 means no deadline, i.e., the call will block forever if the operation cannot be performed.


The function returns 0 on success. On error, it returns -1 and sets errno to one of the values below.



int val = 42;
chsend(ch, &val, sizeof(val), now() + 1000);
if(result != 0) {
    perror("Cannot send message");
printf("Value %d sent successfully.\n", val);