Wir wissen, dass std::deque::front()
einen Verweis auf ein erstes Element von Deque zurückgeben. würde ich wissen, ob dieser Code immer sicher ist:Verschiebe ein Element von std :: deque in C++ 11
//deque of lambdas
deque<function<void(void)>> funs;
// then is some other place:
// take a lock
m.lock();
auto f = move(funs.front()); // move the first lambda in f
funs.pop_front(); // remove the element from deque //now the value is hold by f
m_.unlock(); // unlock the resorce
f(); //execute f
Ich habe diesen Code mit gcc-4.9 und Arbeiten versucht, aber ich weiß nicht, ob wir diesen Code sicher betrachten kann!
Es ist fast ein gültiger Code ist. Fast - weil du nicht nach Leerheit suchst. Das Verschieben des gespeicherten Elements ist eine sichere Operation. – bobah
Tippfehlerbericht: Sie verwenden 'lock()' auf 'm' und' unlock() 'auf' m_'. – Notinlist