创建的队列所以基本上我有一个静态地图,我的结构映射到队列,但是当我尝试推入队列时,它无法推送任何东西。无法推送到由静态地图<结构,队列>
struct SignalID_t {
unsigned int lock;
unsigned int cond;
SignalID_t(unsigned int lock_, unsigned int cond_):lock(lock_), cond(cond_) {}
};
class SignalIDComp {
public:
bool operator()(const SignalID_t& a, const SignalID_t& b) const
{return a.lock == b.lock && a.cond == b.cond;}
};
class ThreadManager{
public:
static std::queue<ucontext_t *>& waitingQ(SignalID_t id)
{return threadsWaitingOnConditions[id];}
private:
static std::map<SignalID_t, std::queue<ucontext_t*>> threadsWaitingOnConditions;
}
map<SignalID_t, queue<ucontext_t *>, SignalIDComp> ThreadManager::threadsWaitingOnConditions;
class Threads{
void thread_wait(int lock, int cond){
SignalID_t id(lock, cond);
ThreadManager::waitingQ(id).push(ThreadManager::getRunningThread());
if (ThreadManager::waitingQ(id).empty())
cout << "failed to push thread to cond waiting Q" << endl;
}
}
在我尝试推入队列的函数中,我立即测试队列以查看它是否为空,并且它始终是cout。我怀疑它可能与地图是静态的,队列没有正确初始化有关,但我似乎无法修复它。
这不是真正的代码:类定义必须用分号终止,并且没有'ThreadManager :: getRunningThread()'。请发布真实的代码。 –