Qt相当于Win32 Fibers

时间:2009-10-16 12:21:41

标签: windows cocoa multithreading qt

我负责一个Windows应用程序,它加载了用c ++编写的插件“script”dll。

该应用程序公开了一个基于Win32光纤的API,允许插件dll中的c ++'脚本'使用'yield'和'resume'类型调用 - 本质上是协同例程 - 来对脚本中的依赖项进行排序,而无需求助于异步事件架构。

现在,我正在考虑将应用程序移植到Mac和Linux,并且已经出现了使用像Qt这样的框架的选项。

但是,Qt似乎只支持正确的异步线程,而不是类似于Win32光纤的轻量级同步线程原语。

在Cocoa或Qt等跨平台框架中是否存在Win32 Fibera模拟?

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我不知道Cocoa,但在Qt中你不支持纤维。

答案 2 :(得分:0)

Qt中没有任何内容。但是,现有的协程库,编写一个在Windows上使用光纤而在POSIX上使用setjmp / longjmp的Qt风格包装并不难。

例如,here是一个很好的包装类中POSIX协程的实现。

答案 3 :(得分:0)

也许你已经找到了一个不错的解决方案,但如果没有,(即使我还没试过),我认为Boost可能是你的朋友:

http://www.crystalclearsoftware.com/soc/coroutine/