Поддержка нити Adobe Alchemy - PullRequest
       22

Поддержка нити Adobe Alchemy

1 голос
/ 23 июля 2011

Мне удалось скомпилировать (без ошибок) библиотеку fluidsynth, которая использует pthreads в старой версии и glib gthreads в более новой версии. Тем не менее, в SWF я получаю ошибки времени выполнения Undefined sym: _pthread_attr_init и Undefined sym: _g_thread_init соответственно.

Это тупик, насколько многопоточность идет, или есть способ заставить эту работу? (Или я что-то пропускаю на финальной стадии связывания?)

В случае gthreads в этом документе упоминается реализация пользовательских потоков:

Система потоков инициализируется с помощью g_thread_init (), которая принимает необязательную реализацию пользовательского потока или NULL для реализации по умолчанию.

Я понимаю, что алхимия не поддерживает нативные потоки, но можно ли использовать для этой цели какую-то искусственную реализацию зеленых потоков?

1 Ответ

1 голос
/ 26 июля 2011

Поскольку Flash Player не является многопоточным, ваш код Alchemy C не может быть многопоточным.Тем не менее, вы можете обойти это, используя «зеленую нить» в Алхимии.

Когда вы вызываете функцию, предоставляемую через AS3_FunctionAsync , она приостанавливает себя всякий раз, когда flyield *Вызывается код 1006 *, позволяющий запустить другой код и затем возобновить «позже».

Я не думаю, что есть какая-либо причина, по которой ваш код AS3 не может вызывать две или более функции, заключенные в AS3_FunctionAsync.в то же время.Поскольку ваш код является поточно-ориентированным, он, вероятно, просто будет работатьОбратите внимание, что вам нужно будет размещать flyields по всему коду, чтобы он работал хорошо (это очень похоже на «совместную многозадачность» старых ОС).

В любом случае, стоит попробовать.

...