xs_init(3)

# xs_init(3) Manual Page

## NAME

xs_init - initialise Crossroads context

## SYNOPSIS

void *xs_init ();

## DESCRIPTION

The xs_init() function initialises a Crossroads context.

Thread safety

A context is thread safe and may be shared among as many application threads as necessary, without any additional locking required on the part of the caller.

The individual sockets within a context are not thread safe — applications may not use a single socket concurrently from multiple threads.

A socket may be migrated from one thread to another, by issuing a full memory barrier between individual calls on the socket. For example, this means applications can create a socket in one thread with xs_socket() and then pass it to a newly created thread as part of thread initialization via a structure passed as an argument to pthread_create().

Context options

Context options may be set prior to creating the first socket within a context, using the xs_setctxopt() function. See xs_setctxopt(3) for details on the available context options.

Multiple contexts

Multiple contexts may coexist within a single application. Thus, an application can use Crossroads directly and at the same time make use of any number of additional libraries or components which themselves make use of Crossroads.

## RETURN VALUE

The xs_init() function shall return an opaque handle to the initialised context if successful. Otherwise it shall return NULL and set errno to one of the values defined below.

## ERRORS

No error values are defined.

## SEE ALSO

xs(7) xs_term(3) xs_setctxopt(3)

## AUTHORS

The Crossroads documentation was written by Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <martin@lucina.net>.