Thursday July 22, 2010
| [Time] Name | Message | 
|---|---|
| [01:31] ispot | hello, when I launched zmq_forwarder , I got "what (): no such device", why? | 
| [03:25] guido_g | ispot: getting no answer on irc is a sure sign of a) question phrased in a way that nobody understands it or b) question is already solved by the docs/faqs or c) not enough information provided (close to a) or d) noone knows an answer | 
| [07:51] ben_k | I dont think flush on ypipe is safe what happens if it wakes up after the check but before the set - unlikely but can happen | 
| [08:16] sustrik | ben_k: what check and what set do you mean? | 
| [09:04] ben_k | if (c.cas (w, f) != w) { | 
| [09:04] ben_k | // Compare-and-swap was unseccessful because 'c' is NULL. | 
| [09:04] ben_k | // This means that the reader is asleep. Therefore we don't | 
| [09:04] ben_k | // care about thread-safeness and update c in non-atomic | 
| [09:04] ben_k | // manner. We'll return false to let the caller know | 
| [09:18] sustrik | ben_k: the point is that the reader is woken up only if writer finds out that it is asleep | 
| [09:18] sustrik | and flush returns false | 
| [09:18] sustrik | see pipe.cpp: | 
| [09:18] sustrik | line 210: | 
| [09:18] sustrik | void zmq::writer_t::flush () | 
| [09:18] sustrik | { | 
| [09:18] sustrik | if (!pipe->flush ()) | 
| [09:18] sustrik | send_revive (peer); | 
| [09:18] sustrik | } | 
| [09:19] sustrik | send_revive is the function that wakes the reader | 
| [09:19] ben_k | I see so this is a manual sleep not a scheduler sleep .. | 
| [09:20] sustrik | yes | 
| [09:25] ben_k | ty | 
| [10:46] quatrix | Hey. is it possible to send() complex data structure/objects, or do I need to serialize them first? | 
| [10:50] drbobbeaty | From what I've read, it appears that the real "payload" of the ZMQ message is a byte array - so you'll need to use your own serialization scheme on top of that. Like Google protobufs, or something similar. | 
| [10:56] quatrix | thanks |