Ну он видит что там стоит atomic_flag, выходит из этой функции и shared_ptr мувает обратно в контейнер, откладывая задачу в конец списка и потом берет другую задачу
Когда поток 0 проснется через указанное время (грубо говоря, выполнит вставку в unordered_map), то он освободит atomic_flag, а затем когда ту задачу TaskID: 2 вновь достанут из контейнера