Comment commencer à utiliser la programmation multithread?
Je suis un débutant sur un Débordement de Pile.
Je suis en train de travailler sur une plate-forme Unix en C/C++.
Sachant programmation de base en ce qui concerne ces comment pourrais-je commencer avec le multithreading?
Multithreading semble être très intéressant et je veux développer mes connaissances dans ce domaine.
Comment pourrais-je commencer avec le multithreading et quelles sont les meilleures techniques/livres/ebooks/les articles disponibles pour récupérer les concepts le plus tôt possible?
source d'informationauteur Vijay
Vous devez vous connecter pour publier un commentaire.
Étude sur pthread, mutex et essayer de mettre en œuvre même qui sera bénéfique pour vous.
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
Apprentissage multi threading la programmation est en deux parties:
D'apprentissage multi-thread de programmation est plus difficile, thre est un bon article publié dans le Linux Journal qui vous aidera à comprendre les principes de base.
Afin de mieux comprendre les pThreads je suggère la lecture de ce tutoriel - POSIX Threads la Programmation
Il est également un bon livre par O'rielly appelé PThreads De Programmation
Si vous êtes à la mise en route avec le multithreading, mon conseil serait de commencer par l'examen et de mieux comprendre les I/O sur votre système. Comprendre bloquant ou non bloquant I/O, de signalisation, asynchrone, des routines, des rappels et cetera. I/O est probablement l'un, si ce n'est le principal, en raison de l'ajout de multithreading pour vos programmes. Avec cette connaissance, vous pouvez ramasser un livre sur les pthreads ou les threads java, ou envelopper votre esprit autour de l'élan fils bibliothèque ou d'une autre le filetage de la bibliothèque pour votre favori de la technologie.
Je pense que l'article de Wikipédia Le Multithreading vous donner un aperçu rapide et en suivant les liens externes, vous aurez un bon aperçu du sujet.
Après que - ou en plus - vous avez pu lire Tanenbaum est Systèmes d'exploitation: Conception et mise en Œuvre (grand livre).
Mais la chose la plus importante est - à mon avis - pour obtenir vos mains sur elle. Il suffit donc de télécharger un exemple d'application à partir... disons Le Projet De Code ou ce site web, vous pourrez trouver et jouer avec elle. Voir la façon dont l'application diffère selon que vous utilisez des verrous ou de ce qui se passe si deux threads tentent d'accéder à la même ressource et à quelle fréquence cela se produit, etc.
Je pense que vous obtenez le coup de lui assez rapidement. Et c'est amusant de les évaluer et de jouer avec des techniques qui sont nouveaux à soi-même.
J'ai trouvé ce tutoriel très instructif et bien écrit. J'espère que c'est utile.
Peut-être un peu controversé, mais le multithreading vraiment cklicked pour moi quand j'ai essayé de résoudre un codage de puzzle une fois.
Le puzzle était sur le thread d'écriture coffre-fort à code sans utiliser les mutex. Mes premiers essais ont été malheureuse mais quand je l'ai enfin eu, c'était comme apprendre à faire du vélo - je n'ai jamais ressenti de doute à propos de la simultanéité depuis.
À certains moments, j'ai même tombé sur des programmeurs qui ont lu des livres sur le sujet, mais ne parvient pas à comprendre des choses simples comme le fait qu'une primitive de cession peut parfois ne pas être une opération atomique.
Tout dépend de vous des objectifs. Il y a beaucoup de code et des articles communs avec le multi-threading résolu des problèmes basés sur des threads POSIX cadre (j'en vois certain nombre de recommandations de bons articles ici). La question principale est de savoir ce que vous voulez construire. Pour certaines tâches, il n'est pas recommandé de faire de la multi-threading.
Ici est le livre "Les fondations de Multithread, Parallèlement, et pour la Programmation Distribuée" qui est liée à la question et à qui je tiens à le recommander. L'avantage le plus significatif de il est relativement facile à lire " le style, mais pas de lien pour les threads POSIX idéologie (qui est un problème commun).
Si vous voulez étudier les détails, essayez de lire Advanced Programming in the UNIX Environment.
ou de démarrer avec Systèmes informatiques: Un point de vue du Programmeur.
Autre chose à essayer: http://www.threadingbuildingblocks.org
puisque c'est UNIX pourquoi ne pas commencer avec des processus et de l'IPC et les communications? c'est à dire de files de messages mémoire partagée et les mutex.
L'étude des divers bibliothèque des cadres et des O/S installations est une bonne façon de comprendre le faible niveau de la concurrence. Des exemples, vous y trouverez peut obtenir vous avez commencé à écrire de code concurrente dans un court laps de temps.
Après vous déboguez votre chemin à travers quelques blocages et de la mémoire partagée des problèmes de corruption, vous trouverez que vous avez besoin de quelques outils pour le raisonnement et la décomposition de vos problèmes de concurrence d'accès. Personnellement, j'aime Herb Sutter est Les Piliers de la Simultanéité article comme un point de départ. L'idée est de mieux comprendre pourquoi vous avez besoin de simultanéité. Vous êtes à la recherche pour améliorer le temps de réponse, calcul parallèle, une combinaison de raisons?
Comprendre le "pourquoi" vous mènera à une meilleure "quoi". De là, vous pouvez toujours araignée à faible niveau d'approches: Objets Actifsles objets de surveillancela transmission de messageetc. Comme vous l'avez dit, il y a beaucoup à apprendre dans ce domaine.