Merge pull request #3783 from std-any-emplace/master

Documentation fix regarding thread-safety of zmq_poll/zmq_poller.txt.
This commit is contained in:
Doron Somech 2020-01-19 11:48:12 +02:00 committed by GitHub
commit d47b7fa065
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 2 deletions

View File

@ -0,0 +1,15 @@
# Permission to Relicense under MPLv2 or any other share-alike OSI approved license chosen by the current ZeroMQ BDFL
This is a statement by the Github user "std-any-emplace"
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2) or any other
share-alike Open Source Initiative approved license chosen by the current
ZeroMQ BDFL (Benevolent Dictator for Life).
A portion of the commits made by the Github handle "std-any-emplace", with
commit author "std-any-emplace", are copyright of the Github user "std-any-emplace".
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.
"std-any-emplace"
2020/01/19

View File

@ -80,6 +80,16 @@ NOTE: The _zmq_poll()_ function may be implemented or emulated using operating
system interfaces other than _poll()_, and as such may be subject to the limits system interfaces other than _poll()_, and as such may be subject to the limits
of those interfaces in ways not defined in this documentation. of those interfaces in ways not defined in this documentation.
THREAD SAFETY
-------------
The *zmq_pollitem_t* array must only be used by the thread which
will/is calling _zmq_poll_.
If a socket is contained in multiple *zmq_pollitem_t* arrays, each owned by a
different thread, the socket itself needs to be thead-safe (Server, Client, ...).
Otherwise, behaviour is undefined.
RETURN VALUE RETURN VALUE
------------ ------------
Upon successful completion, the _zmq_poll()_ function shall return the number Upon successful completion, the _zmq_poll()_ function shall return the number

View File

@ -56,8 +56,11 @@ In addition, _user_data_ may be specified, which is not used by the poller, but
passed back to the caller when an event was signalled in a call to passed back to the caller when an event was signalled in a call to
_zmq_poller_wait_ or _zmq_poller_wait_all_. _user_data_ may be NULL. If it is _zmq_poller_wait_ or _zmq_poller_wait_all_. _user_data_ may be NULL. If it is
not NULL, it must be a valid pointer. Otherwise, behaviour is undefined. not NULL, it must be a valid pointer. Otherwise, behaviour is undefined.
_zmq_poller_add_ may not be called multiple times for the same socket You must only add a socket to a single poller instance once (unless
(unless _zmq_poller_remove_ has been called for that socket). _zmq_poller_remove_ has been called for that socket before). You may
add a socket to multiple poller instances, if the socket itself
is explicitly thread-safe (Server, Client, ...). If the socket is not,
you may invoke undefined behavior.
_zmq_poller_modify_ modifies the subscribed events for a socket. It is _zmq_poller_modify_ modifies the subscribed events for a socket. It is
legal to specify no events (i.e. 0) to disable events temporarily, and legal to specify no events (i.e. 0) to disable events temporarily, and
@ -183,6 +186,10 @@ THREAD SAFETY
Like most other 0MQ objects, a poller is not thread-safe. All operations must Like most other 0MQ objects, a poller is not thread-safe. All operations must
be called from the same thread. Otherwise, behaviour is undefined. be called from the same thread. Otherwise, behaviour is undefined.
In addition to that, if you want to add a socket to multiple existing poller
instances, the socket itself needs to be thread-safe (Server, Client, ...).
Otherwise, behaviour is undefined.
RETURN VALUE RETURN VALUE
------------ ------------
_zmq_poller_new_ returns a valid pointer to a poller, or NULL in case of a failure. _zmq_poller_new_ returns a valid pointer to a poller, or NULL in case of a failure.