У вас есть два отдельных объекта, к сожалению, с одинаковыми именами:
map_type ThreadManager::threadsWaitingOnConditions;
и
map_type threadsWaitingOnConditions;
Вы путаете их.Окончательная проверка должна сказать:
if (ThreadManager::threadsWaitingOnConditions[id].empty()) { /* ... */ }
или что-то на этот счет.Учитывая, что статическая карта-член является закрытой, вы, вероятно, должны просто сказать:
if (ThreadManager::waitingQ(id).empty()) { /* ... */ }
Я не понимаю, что вам нужно с объектом глобальной карты.Это кажется ненужным.Или, скорее, вы, вероятно, подразумеваете, что это определение статического объекта-члена, и в этом случае вы должны написать это так:
map<SignalID_t, std::queue<ucontext_t*>> ThreadManager::threadsWaitingOnConditions;
// ^^^^^^^^^^^^^^^