les fonctions "thread_safe" et la programmation multi-thread
les fonctions "thread_safe" et la programmation multi-thread - Divers - Programmation
MarshPosté le 23-09-2009 à 15:22:58
Voilà,
Deux threads qui utilisent la même fonction 'avcodec_open()'. cette fonction n'es thread_save, c à dire elle n'es pas ré-entrante. cette fonction appartiens à une bibliothèque (qui s'appelle libavcodec de FFmpeg).
l'exécution de ces deux threads donne des erreurs aléatoires (liés probablement à l'allocation mémoire faite par avcodec_open() ).
la question est : y a t il un moyen pour utiliser des fonctions qui ne sont pas ré-entrantes dans des exécutions en parallèle (multi-threads).
Notes : - le but global est le décodage parallèle de deux flux vidéo (deux threads qui décode et affiche les images vidéo en même temps) - ce n'es pas un problème d'exclusion mutuelle. même avec des exécutions exclusives, ça ne fonctionne pas! - je programme en C
mots clés : avcodec_open , ffmpeg , libavcodec
Message édité par iglance7 le 23-09-2009 à 15:46:08
Marsh Posté le 23-09-2009 à 15:22:58
Voilà,
Deux threads qui utilisent la même fonction 'avcodec_open()'. cette fonction n'es thread_save, c à dire elle n'es pas ré-entrante. cette fonction appartiens à une bibliothèque (qui s'appelle libavcodec de FFmpeg).
l'exécution de ces deux threads donne des erreurs aléatoires (liés probablement à l'allocation mémoire faite par avcodec_open() ).
la question est : y a t il un moyen pour utiliser des fonctions qui ne sont pas ré-entrantes dans des exécutions en parallèle (multi-threads).
Notes :
- le but global est le décodage parallèle de deux flux vidéo (deux threads qui décode et affiche les images vidéo en même temps)
- ce n'es pas un problème d'exclusion mutuelle. même avec des exécutions exclusives, ça ne fonctionne pas!
- je programme en C
mots clés : avcodec_open , ffmpeg , libavcodec
Message édité par iglance7 le 23-09-2009 à 15:46:08