Je sais que l'implémentation des threads dans le noyau Linux et dans la libc a subi de gros changements par le passé. Quelle est la meilleure façon d'utiliser les threads aujourd'hui à partir des programmes C? (Je ne sais même pas s'il y a plus d'une API que je peux utiliser - Je sais juste pthreads)Bonne façon de faire la programmation des threads sous Linux
Je ne me soucie pas trop de noyaux anciens et les versions de libc, mais je ne soin de utilisation efficace de plusieurs cœurs et de la portabilité (je souhaite que mon code fonctionne aussi sur d'autres Unix).
Si j'utilise simplement des threads Posix comme décrit dans man 7 pthreads
et restreindre mon code à l'API POSIX, cela sera-t-il OK?
éditer: merci à tous ceux qui ont répondu. J'ai pensé à utiliser une bibliothèque de pools de threads disponible, mais pour ce projet, ce n'est vraiment pas une option.
Les processus multiples ne s'échelonnent pas bien sur la même machine, prennent souvent 3-4 fois la quantité de travail pour les petites tâches (puisque vous devez implémenter un mécanisme de communication qui aura néanmoins un blocage potentiel, livelock, et tous les d'autres types de "verrous" non souhaités). Cependant, si vous pouvez vous en passer avec cette méthode, vous pouvez avoir plus d'accélération puisque vous pourrez peut-être réduire le nombre de blocages dans votre algorithme. –
Merci pour le commentaire @San. Tu as raison; les processus multiples ne s'adaptent pas bien s'il y a une communication considérable entre les processus. J'ai modifié ma réponse pour clarifier cela. –