2010-11-17 4 views
1

puis-je configurer un thread séparé pour un rappel AU (qui est en C)? Comment ? Si oui, quelles méthodes de threads sont les meilleures pour CoreAudio? NSThreads? NSOperationQueue? GCD? Autre chose?CoreAudio et Threads, comment?

Merci beaucoup.

+1

Pouvez-vous clarifier un peu? Est-ce pour un rendu en temps réel ou hors ligne? Qui appelle votre fonction de rendu? – sbooth

+0

Je voulais construire AUGraph et lire les données audio dans la boucle principale, mais en exécutant le graphe dans un thread séparé afin que toute action UI n'interfère pas avec le rendu audio. J'espère être plus clair. –

Répondre

0

Votre rappel AU n'est-il pas déjà exécuté dans un thread séparé? Dans la plupart des cas, je dirais que le système d'exploitation gère cela pour vous. L'interface utilisateur doit toujours être sur le thread principal, tandis que Core Audio fait généralement son travail sur un autre thread. J'ai seulement eu l'expérience avec NSThread et pthreads, depuis que j'ai commencé avant GCD et NSOperationQueue, et n'ai pas eu une chance de voir si et comment ils fonctionnent avec Core Audio.

+0

J'ai créé mon AUGraph et préchargé mes fichiers audio sur la boucle principale mais je cours AUGraph sur un NSThread séparé. Sur un iphone 1ère génération, l'interface utilisateur répond plus vite (avant, si tout était sur la boucle principale et que le callback de l'UA était surchargé, l'interface serait bloquée). –

0

Non, il est impossible, parce que:

Un rappel rendu vit sur un thread prioritaire en temps réel sur lequel appels subséquents rendent arrivent de manière asynchrone. Apple Documentation