Adobe Alchemy线程支持

时间:2011-07-22 23:27:18

标签: flash actionscript-3 alchemy

我设法编译(没有错误)使用旧版本中的pthreads和新版本中的glib gthreads的fluidynth库。但是,在swf中,我分别得到运行时错误Undefined sym: _pthread_attr_initUndefined sym: _g_thread_init

就线程而言,这是死路一条,还是有办法让这项工作成功? (或者我是否在最后的连接阶段跳过某些东西?)

对于gthreads,this doc提到自定义线程实现:

  

使用g_thread_init()初始化线程系统,它为可选的自定义线程实现或默认实现的NULL。

我知道炼金术不支持原生线程,但是为了这个目的可以使用一些虚假的绿色线程实现吗?

1 个答案:

答案 0 :(得分:1)

由于Flash Player没有线程化,因此您的Alchemy C代码无法进行线程化。但是,您可以使用Alchemy中的“绿色线程”来解决它。

当您调用通过AS3_FunctionAsync公开的函数时,只要调用flyield,它就会暂停,允许其他代码运行,然后“稍后”恢复。

我认为你的AS3代码无法同时调用两个或多个AS3_FunctionAsync包装的函数是没有任何理由的。由于您的代码是线程安全的,因此可能只是工作。请注意,您必须在整个代码中放置flyield以使其更好(这非常类似于旧操作系统的“协作式多任务处理”)。

无论如何它值得一试。