Bonjour à tous,
je vous expose un peu mon background pour que vous puissiez me situer : je suis un ancien juriste qui passait tellement de temps à coder que j'en ai fait mon métier.
J'ai commencé par le python, puis j'ai fait du C et comme je voulais bosser et que je trouvais le web assez cool, je me suis reconverti dans le développement web.
En ce moment, je suis en train d'apprendre le Rust et j'aime beaucoup le langage en revanche, le fait qu'il soit un peu plus poussé me met en face de mes faiblesses d'autodidacte.
Je suis en train d'apprendre le multithreading, mais plus largement la programmation concurrente et j'ai du mal à saisir la notion de programmation concurrente.
Je sais qu'elle se compose de différentes approches : multithreading, multiprocess et non-blocking I/O qui par ailleurs peuvent être complémentaires entre elles, jusqu'à là, j'ai tout bon ?
Et je vois souvent même dans les forums anglophones que la programmation concurrente est souvent résumée à faire plusieurs choses en même temps :
or si c'est en même temps, certes c'est de la programmation concurrente, mais plus précisément du parallélisme.
Puis je me suis demandé, si je fais un thread::spawn deux fois imaginons, vont-ils nécessairement tourner en parallèle ?
D'ailleurs, quel est l'intérêt du multithreading si ce n'est pas en parallèle ? Ça n'entraîne pas un surcout pour le processeur ?
Imaginons je prends le cas d'un processeur avec un cœur, est-ce que j'y gagne quelque chose à faire du multithreading ?
Dans une pure abstraction, prenons par exemple 1 seconde avec un programme avec deux threads, j'imagine que le processeur va faire thread 1, thread 2, thread 1, thread 2.
Est-ce que ça un vrai intérêt ? D'ailleurs le processeur ne fait-il pas ça avec tous les processus, ce qui donne l'illusion du multitasking ?
Désolé de ce fatras de questions. N'hésitez pas à me demander de reformuler.
Partager