<p dir="ltr">Actually zeromq now have group of thread safe sockets: those are: client-server,  radio-dish,  scatter-gather</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Jul 29, 2016 11:47, "Auer, Jens" <<a href="mailto:jens.auer@cgi.com">jens.auer@cgi.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div>
<div style="direction:ltr;font-family:Arial;color:#000000;font-size:10pt">Hi Bharat,<br>
<br>
ZeroMQ is not rhead-safe and sockets shall not be used concurrently from different threads. I think there are some new socket types in the master branch which are thread-safe, but this not part of the release version. As they are not thread-safe, you cannot
 reliably check conditions on them when using them concurrently. You could use a mutex to prevent concurrent access.<br>
<br>
The recommended alternative would be to have independent theads that do not share data or resources communicating via ZMQ_PAIR sockets. I would strongly recommend to go that route as data-sharing multi-threading is a highway to hell. It does also often not
 offer the performance/scalability gain that you are hoping for because of congestion at the shared resources.<br>
<br>
Cheers,<br>
  Jens<br>
<div><br>
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div>
<div>
<div><span lang="en-GB">
<div>
<div style="margin:0pt"><font face="Calibri,sans-serif" size="2"><span style="font-size:11pt"><font color="#a29791" face="Arial,sans-serif" size="2"><span style="font-size:9pt">--</span></font></span></font></div>
<font face="Arial" size="1"><span style="font-size:8pt">
<div><font size="2"><span style="font-size:9pt"><b>Jens Auer </b>| <span style="background-color:rgb(255,255,255)">
CGI | Software-Engineer</span></span></font></div>
<span style="background-color:rgb(255,255,255)"></span>
<div><font size="2"><span style="font-size:9pt"><span style="background-color:yellow"><span style="background-color:rgb(255,255,255)">CGI (Germany) GmbH & Co. KG</span><br>
</span>Rheinstraße 95 | 64295 Darmstadt | Germany</span></font></div>
<div><font size="2"><span style="font-size:9pt">T: <a href="tel:%2B49%206151%2036860%20154" value="+49615136860154" target="_blank">+49 6151 36860 154</a><br>
<a href="mailto:jens.auer@cgi.com" target="_blank"><u>jens.auer@cgi.com</u></a><br>
<font size="1"><span style="font-size:7.5pt">Unsere Pflichtangaben gemäß § 35a GmbHG / §§ 161, 125a HGB finden Sie un<span style="background-color:rgb(255,255,255)">ter
</span></span></font><span style="background-color:rgb(255,255,255)"><a href="http://de.cgi.com/pflichtangaben" target="_blank"><font size="1"><span style="font-size:7.5pt"><u>de.cgi.com/pflichtangaben</u></span></font></a><font size="1"><span style="font-size:7.5pt">.</span></font></span></span></font></div>
<span style="background-color:rgb(255,255,255)"></span>
<div><font face="Calibri" size="2"><span style="font-size:11pt"> </span></font></div>
<div><font size="1"><span style="font-size:7.5pt">CONFIDENTIALITY NOTICE: Proprietary/Confidential information belonging to CGI Group Inc. and its affiliates may be contained in this message. If you are not a recipient indicated or intended in this message
 (or responsible for delivery of this message to such person), or you think for any reason that this message may have been addressed to you in error, you may not use or copy or deliver this message to anyone else. In such case, you should destroy this message
 and are asked to notify the sender by reply e-mail.</span></font></div>
</span></font></div>
</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="font-family:Times New Roman;color:#000000;font-size:16px">
<hr>
<div style="direction:ltr"><font color="#000000" face="Tahoma" size="2"><b>Von:</b> zeromq-dev [<a href="mailto:zeromq-dev-bounces@lists.zeromq.org" target="_blank">zeromq-dev-bounces@lists.zeromq.org</a>]" im Auftrag von "Bharat Somani [<a href="mailto:bharatdsomani@gmail.com" target="_blank">bharatdsomani@gmail.com</a>]<br>
<b>Gesendet:</b> Freitag, 29. Juli 2016 09:09<br>
<b>An:</b> ZeroMQ development list<br>
<b>Betreff:</b> [zeromq-dev] Want to use ZMQ socket in multithreading<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">
<div>
<div>
<div>Hi All,<br>
<br>
</div>
I am creating socket in one thread and sharing this to be used in multiple threads. But when I try to use it, sometimes I get error
<br>
<br>
Assertion failed: check () (src/msg.cpp:248)<br>
<br>
</div>
<span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:19.5px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;display:inline!important;float:none;background-color:rgb(255,255,255)">I
 was breaking ZMQ's rule of sharing sockets among threads.<br>
<br>
</span></div>
<span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:19.5px;text-align:left;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;display:inline!important;float:none;background-color:rgb(255,255,255)">Is
 there any way to know whether the socket is currently in used (sending data) state? If there is a way, I can check it before sending the data.<br>
<br>
</span>
<div>
<div>
<div>
<div><br>
Regards,<br>
</div>
<div>Bharat<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

<br>_______________________________________________<br>
zeromq-dev mailing list<br>
<a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
<a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" rel="noreferrer" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br></blockquote></div></div>