L'écriture d'un code pour implémenter la bibliothèque de threads fait-elle partie du code du noyau? L'implémentation de la fonction pthread_create() et al fait-elle partie du noyau?Comment implémenter la bibliothèque de threads?
Répondre
Les threads sont parfois implémentés uniquement dans l'espace utilisateur (également appelé "green threads"), mais typiquement dans l'espace noyau. Le wikipedia article explique bien.
Sous Linux, pthread_create()
et al. est implémenté dans le cadre du projet glibc. Il utilise le syscall (non portable, spécifique à Linux) clone()
. (Le fork()
de Linux est également implémenté en termes de clone()
). Certains des BSD ont également un appel système similaire appelé rfork()
. Je crois comprendre que clone()
ou rfork()
créeront tous deux un nouveau processus, mais vous pouvez spécifier un indicateur qui dit «utiliser une sémantique de copie à l'écriture pour lui donner un espace d'adressage différent». Donc, si vous voulez fork()
, vous spécifiez cet indicateur, mais si vous voulez créer un thread, vous ne le faites pas, et vous vous retrouvez avec un espace d'adressage partagé.
(édité pour fournir plus de détails)
- 1. Bibliothèque d'entreprise Comment implémenter un IExceptionHandler?
- 2. C: bibliothèque de threads POSIX test-suite
- 3. Comment débuter avec l'implémentation d'une bibliothèque de threads?
- 4. Implémentation d'une bibliothèque de threads C++ en C++
- 5. Socket SSL dans Windows. Bibliothèque? Synchrone/asynchrone? Threads?
- 6. Threads Java
- 7. Comment contrôler l'utilisation de la mémoire avec le pool de threads de la bibliothèque Omni Thread Library?
- 8. Comment implémenter la connexion gmail?
- 9. Comment implémenter des requêtes signées AWS avec la bibliothèque amazon java?
- 10. Implémenter différentes dates d'expiration sur des documents dans une bibliothèque
- 11. Comment tester la sécurité des threads
- 12. Comment abandonner les threads/tâches CCR?
- 13. Comment vérifier l'état actuel de la pile de threads
- 14. Comment implémenter un effet SeriesInterpolate pour une nouvelle bibliothèque de graphiques Flash?
- 15. La bonne façon de contrôler plusieurs threads
- 16. Comment mieux implémenter la fonctionnalité 'site fermé'?
- 17. Comment implémenter la recherche sur jqgrid?
- 18. Comment implémenter la fonctionnalité Zip dans VBA?
- 19. Comment implémenter la mémoire partagée dans .NET?
- 20. Comment implémenter la recherche ternaire en C?
- 21. Comment implémenter la compression GZip dans ASP.NET?
- 22. Comment implémenter la propriété DataTable avec INotifyPropertyChanged
- 23. Comment implémenter la localisation dans web.sitemap
- 24. Comment détecter un blocage avec la bibliothèque Asio?
- 25. Comment implémenter l'animation de chemin?
- 26. Comment implémenter le temporisateur usermode en C?
- 27. Comment implémenter l'authentification Querystring
- 28. Supprimer la sortie de la console de bibliothèque tierce?
- 29. Threads C# pour la manipulation de fichiers
- 30. Comment implémenter correctement IUserType?