Advanced FLTk
本章将介绍高级的编程和设计,来帮助您充分利用 FLTK。
Multithreading
FLTK 可实现多线程的 GUI 应用程序,但与一般的多线程编程一样,必须牢记一些概念和注意事项。
其中的关键是:对于 FLTK 支持的许多目标平台来说,只有进程 main() 的线程被允许处理系统事件、创建或销毁窗口以及打开或关闭窗口。 进一步说,就是只有进程 main() 的线程可以安全地 write to the display。
为了所有目标平台支持这点,
- 所有 FLTK draw() 方法都得在 main() 线程执行。
- 一个工作线程(非 mian() 线程)可以更新现有小部件的状态,但它不能直接进行任何渲染,也不能创建或销毁窗口。(注意:存在一种特殊情况 Fl_Gl_Window,只要采取适当的预防措施,它就可以从工作线程安全地渲染到现有的 GL 上下文。)
创建可移植线程
FLTK 没有提供线程接口(译注:需要使用平台支持的线程创建方式)。您可以在 test/threads.h 和 test/threads.cxx 找到一个简单的示例,该示例展示了针对所有支持的平台如何实现创建线程。
如果简单的示例 test/threads.cxx 不能满足您的需求,您可能需要选择一个能够提供您所需功能的第三方库。
利用 Rust 的可移植性,能够轻松创建可移植线程。
标签:FLTk,示例,创建,高级,线程,threads,main,FLTK From: https://www.cnblogs.com/dgmv/p/17995316