FLTK窗口冻结不一致

时间:2019-01-01 07:31:10

标签: c++ multithreading user-interface fltk

我正在尝试模拟窗口中小部件的“实时”移动,因此使用了flush方法,并且基本上在此期间,循环Fl Window将冻结在循环中的任意点,但并非每次运行代码,更像是3次。窗口将显示“无响应”错误,然后在循环完成后恢复。

如代码中所示,我尝试使用锁定功能,认为这是试图干扰的主要模块,但未产生任何结果

Fl::lock();
while (instructions.size() > 0) {
    instructions[0]->do_it();
    this->redraw();
    Sleep(plotSpeed);
    Fl::flush();
    instructions.erase(instructions.begin());
}
Fl::awake();
Fl::unlock();

1 个答案:

答案 0 :(得分:0)

我对此也有疑问,大多数情况下OSX和Linux上的行为是不同的。 但有一个建议:在Sleep调用之后,还添加一个Fl :: check()调用,该调用应处理所有未决的内部消息。或者尝试Fl :: wait()。