我正在尝试模拟餐饮哲学家的问题,但我无法将其可视化。当线程从 Waiting() 移动到 Eating() 再到 Thinking() 时,它会更改一个名为 state 的变量来表示这一点。但是在我的主线程中,它永远不会看到状态变量的变化。它在绘图时调用状态返回函数来改变哲学家的颜色。
有什么帮助吗?
这是一些代码:状态更改
void Philosopher::Eat()
{
state_ = EATING;
Sleep(500);
}
返回函数
Philosopher::_state Philosopher::ReturnState()
{
return state_;
}
返回函数的调用
Philosopher::_state current_state_;
current_state_ = philosopher_[i].ReturnState();
switch (current_state_)
{
case Philosopher::PICKING:
{
glColor3f(1, 0, 0);
break;
}
case Philosopher::EATING:
{
glColor3f(0, 1, 0);
break;
}
case Philosopher::THINKING:
{
glColor3f(0, 0, 1);
break;
}
}