Inlined:<div><br></div><div>-Alan<br><br><div class="gmail_quote">On Thu, Mar 15, 2012 at 9:57 AM, Artsiom <span dir="ltr">&lt;<a href="mailto:u2.storm@gmail.com">u2.storm@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    I some questions concerning multithreading and using multiple
    channels within single connection.<br>
    <br>
    Is structure amqp_connection_state_t is thread-safe?<br>
    Can I share connection between threads and at the same time<br>
    use separate channel for each thread in producer app? and in
    consumer app?<br></div></blockquote><div><br></div><div>The amqp_connection_state_t object is not synchronized. In order to use it from multiple threads you would have to synchronize its use across threads (provide some external mutual exclusion when calling any amqp_* function that uses a common amqp_connection_state_t).</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    The second part of the question(about consumer) is needed to be
    explained.<br>
    When I looked at API, I didn&#39;t find any difficulties to use many
    channels within single connection<br>
    in producer app, because each method (declare queue\exchange, bind,
    publish &amp; etc) has<br>
    &quot;channel&quot; parameter.<br>
    <br>
    But in consumer app, where it is needed to receive messages (or
    frames as shown in example .c-files),<br>
    we have to call wait_for_single_frame method, which is lack of
    &quot;channel&quot; method.<br>
    Could you give an advice how to organize &quot;multichannel&quot; message
    fetch from<br>
    one queue?<br></div></blockquote><div><br></div><div>The API for consuming messages is pretty low-level at this point.  In order to consume from multiple channels you need to read messages from all the channels using amqp_simple_wait_frame, then provide your own logic to handle messages from different channels appropriately.</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    <b>OR</b><br>
    It is better to use separate connection for each thread and have no
    problems? :)<br>
    <br></div></blockquote><div>That would the the easiest way to get started. </div></div><br></div>