title: Is possible to use std::deque::push_back() and std::deque::front()/std::deque::pop_front() on different threads without synchronization?
body: <p>I have a producer/consumer situation with single producer and single consumer, sharing a common std::deque.</p>
  
  <p>Let me write some code:</p>
  
  <pre><code>deque&lt;int&gt; dq;
  
  void producer()
  {
  for (int i = 0; i &lt; N; i++)
     dq.push_back(i);
     // signal data
  }
  
  void consumer()
  {
    // get signal
    int n = dq.front();
    dq.pop_front();
  }
  </code></pre>
  
  <p>Consider consumer() and producer() being executed on independent threads. Does this code need synchronization?</p>