zmq_inproc.txt 2.59 KB
Newer Older
1 2
zmq_inproc(7)
=============
3

4 5 6

NAME
----
Martin Lucina's avatar
Martin Lucina committed
7
zmq_inproc - 0MQ local in-process (inter-thread) communication transport
8 9 10 11


SYNOPSIS
--------
Martin Lucina's avatar
Martin Lucina committed
12 13
The in-process transport passes messages via memory directly between threads
sharing a single 0MQ 'context'.
14

Martin Lucina's avatar
Martin Lucina committed
15 16 17 18
NOTE: No I/O threads are involved in passing messages using the 'inproc'
transport. Therefore, if you are using a 0MQ 'context' for in-process messaging
only you can initialise the 'context' with zero I/O threads. See
linkzmq:zmq_init[3] for details.
19 20


Martin Lucina's avatar
Martin Lucina committed
21 22
ADDRESSING
----------
Pieter Hintjens's avatar
Pieter Hintjens committed
23 24 25 26 27 28
A 0MQ endpoint is a string consisting of a 'transport'`://` followed by an
'address'. The 'transport' specifies the underlying protocol to use. The
'address' specifies the transport-specific address to connect to.

For the in-process transport, the transport is `inproc`, and the meaning of
the 'address' part is defined below.
Martin Lucina's avatar
Martin Lucina committed
29 30 31 32 33 34 35 36 37


Assigning a local address to a socket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When assigning a local address to a 'socket' using _zmq_bind()_ with the
'inproc' transport, the 'endpoint' shall be interpreted as an arbitrary string
identifying the 'name' to create. The 'name' must be unique within the 0MQ
'context' associated with the 'socket' and may be up to 256 characters in
length.  No other restrictions are placed on the format of the 'name'.
38

Martin Lucina's avatar
Martin Lucina committed
39 40 41 42 43

Connecting a socket
~~~~~~~~~~~~~~~~~~~
When connecting a 'socket' to a peer address using _zmq_connect()_ with the
'inproc' transport, the 'endpoint' shall be interpreted as an arbitrary string
44 45 46 47 48
identifying the 'name' to connect to.  Before version 4.0 he 'name' must have
been previously created by assigning it to at least one 'socket' within the
same 0MQ 'context' as the 'socket' being connected.  Since version 4.0 the
order of _zmq_bind()_ and _zmq_connect()_ does not matter just like for the tcp
transport type.
49 50


Martin Lucina's avatar
Martin Lucina committed
51 52 53 54
EXAMPLES
--------
.Assigning a local address to a socket
----
Pieter Hintjens's avatar
Pieter Hintjens committed
55
//  Assign the in-process name "#1"
Martin Lucina's avatar
Martin Lucina committed
56 57
rc = zmq_bind(socket, "inproc://#1");
assert (rc == 0);
Pieter Hintjens's avatar
Pieter Hintjens committed
58
//  Assign the in-process name "my-endpoint"
Martin Lucina's avatar
Martin Lucina committed
59 60 61 62 63 64
rc = zmq_bind(socket, "inproc://my-endpoint");
assert (rc == 0);
----

.Connecting a socket
----
Pieter Hintjens's avatar
Pieter Hintjens committed
65
//  Connect to the in-process name "#1"
Martin Lucina's avatar
Martin Lucina committed
66 67
rc = zmq_connect(socket, "inproc://#1");
assert (rc == 0);
Pieter Hintjens's avatar
Pieter Hintjens committed
68
//  Connect to the in-process name "my-endpoint"
Martin Lucina's avatar
Martin Lucina committed
69 70 71
rc = zmq_connect(socket, "inproc://my-endpoint");
assert (rc == 0);
----
72 73


74 75
SEE ALSO
--------
Martin Lucina's avatar
Martin Lucina committed
76 77
linkzmq:zmq_bind[3]
linkzmq:zmq_connect[3]
78 79 80
linkzmq:zmq_ipc[7]
linkzmq:zmq_tcp[7]
linkzmq:zmq_pgm[7]
Ilya Kulakov's avatar
Ilya Kulakov committed
81
linkzmq:zmq_vmci[7]
Martin Lucina's avatar
Martin Lucina committed
82
linkzmq:zmq[7]
83

84

85 86
AUTHORS
-------
87 88
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>.