Добрый день. Можно ли делать так без синхронизации:
std::deque<T> d;
// thread 1
while(true){
    d.push_back(...);
}
// thread 2
while(true){
    for(size_t i = d.size() - 1;  i >= 0;  -- i){
        T &e = d[];
        ...
        // используем e
    }
}



