---
name: "zmq_init"
section: "3"
platform: "linux"
package: "zeromq"
version: "4.3.5-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/zmq_init"
---

# zmq\_init(3)

initialise 0MQ context

## NAME

zmq\_init - initialise 0MQ context

## SYNOPSIS

**void \*zmq\_init (int** *io\_threads***);**

## DESCRIPTION

The *zmq\_init()* function initialises a 0MQ *context*.

The *io\_threads* argument specifies the size of the 0MQ thread pool to handle I/O operations. If your application is using only the *inproc* transport for messaging you may set this to zero, otherwise set it to at least one.

**Thread safety**. A 0MQ *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.

This function is deprecated by [**zmq\_ctx\_new**(3)](/zmq_ctx_new/3.md).

## RETURN VALUE

The *zmq\_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

**EINVAL**

An invalid number of *io\_threads* was requested.

## SEE ALSO

[**zmq**(7)](/zmq/7.md) [**zmq\_ctx\_term**(3)](/zmq_ctx_term/3.md)

## AUTHORS

This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at **http://www.zeromq.org/docs:contributing**.
