pyFLTK 函数`Fl.wait()` 阻塞所有线程
Posted
技术标签:
【中文标题】pyFLTK 函数`Fl.wait()` 阻塞所有线程【英文标题】:pyFLTK function `Fl.wait()` blocks all threads 【发布时间】:2014-01-18 17:02:38 【问题描述】:在使用 pyFLTK 编写多线程应用程序时,我发现了一个奇怪的问题:当我调用 Fl.wait()
时,所有线程都会停止,直到出现另一个 FLTK 事件。作为一种解决方法while Fl.check(): time.sleep(0.01)
有效,但我更喜欢简单地使用Fl.run()
。
我正在使用 pyfltk-1.3.0 和 python-2.7.6
【问题讨论】:
【参考方案1】:尝试拨打Fl::lock(); /* your code here */; Fl::unlock();
这篇短文解释了基于 FLTK 1.3 的应用程序中的并发编程:http://www.fltk.org/doc-1.3/advanced.html#advanced_multithreading。
【讨论】:
如果我正确理解了那篇文章,那么 Fl::lock() 和 Fl::unlock() 只需要在从多个线程访问 FLTK 函数时使用。我正在做的是只运行一个对 FLTK 执行任何操作的线程和另一个执行完全独立的事情的线程(而 True:print('X'))。当我使用 Fl.run() 时,第二个线程停止执行。 这确实是一种奇怪的行为。我在 FLTK 上从来没有遇到过这样的问题,所以真的帮不上忙……:(以上是关于pyFLTK 函数`Fl.wait()` 阻塞所有线程的主要内容,如果未能解决你的问题,请参考以下文章
pyFLTK (python v2.7, pyFLTK 1.3): ImportError: DLL load failed: 找不到指定的模块