2009-10-16 6 views
1

Je suis responsable d'une application Windows qui charge les plug-in "script" DLL écrits en C++. L'application expose une API basée sur des fibres Win32 pour permettre aux 'scripts' C++ dans les plugins dll d'utiliser les appels de type 'yield' et 'resume' - essentiellement des routines - pour séquencer les dépendances dans les scripts sans recourir à une architecture d'événement asynchrone.Qt équivalent à Win32 Fibers

Maintenant, je cherche à porter l'application sur Mac et/ou Linux, et l'option d'utiliser un framework comme Qt est apparue. Qt semble cependant ne soutenir que les threads asynchrones appropriés, et non les threads synchrones légers comme les fibres Win32. Y a-t-il un analogue Win32 Fibera sur Cocoa, ou dans un framework à plateforme croisée comme Qt?

+0

Les fibres n'ont jamais vraiment fonctionné, même pas l'équipe de SQL Server pouvait obtenir une version basée sur fibre pour fonctionner correctement –

+0

Le langage de script qui nécessitait la fonctionnalité était LUA, et certaines recherches ont montré comment utiliser les routines Lua directement pour atteindre le résultat que je voulais. –

Répondre

0

Je ne connais pas le cacao, mais dans Qt vous n'avez pas de support pour les fibres.

0

Il n'y a rien dans Qt. Cependant, il existe des bibliothèques de coroutine, et il n'est pas si difficile d'écrire un wrapper de type Qt qui utilise des fibres sous Windows et setjmp/longjmp sur POSIX.

Par exemple, here est une implémentation de coroutines sur POSIX dans une classe wrapper agréable.