‫Bienvenue à nouveau et cette vidéo, nous allons examiner les fils et donc nous allons juste faire le concept
‫très basique des fils où vous verrez comment créer un fil et comment créer plusieurs fils.
‫Commençons donc par utiliser la ligne droite de la console de cette manière spécifique.
‫Je vais donc créer plusieurs mondes, par exemple, quatre d'entre eux, et je vais dire
‫bonjour, monde un, bonjour, monde deux, trois et quatre.
‫Voilà donc les mondes.
‫Si nous les exécutons, nous avons bien sûr besoin, tout d'abord, d'un regarnissage de la console.
‫Ainsi, la console reste ouverte et reste éveillée.
‫Si nous les exécutons, alors ce qui va se passer est très basique.
‫Donc ils vont juste imprimer Hello World quatre fois sur l'écran et nous avons un monde un, deux, trois
‫et quatre.
‫D'accord.
‫Donc ce n'est pas nouveau.
‫Nous l'avons déjà vu bien des fois.
‫Il existe quelque chose appelé thread, une classe appelée thread.
‫Et si nous voulons l'utiliser, nous devons utiliser l'espace de noms de threading.
‫Donc, en utilisant le filetage par points du système et c'est tout.
‫Nous pouvons donc maintenant utiliser des threads pour que je puisse continuer et utiliser la classe de threads et, comme vous pouvez le voir,
‫créer et contrôler un thread, définir ses priorités et obtenir son statut.
‫Donc, ce que nous pouvons faire maintenant, c'est, par exemple, utiliser des threads qui dorment pendant une durée limitée.
‫Alors disons pour 1000 millisecondes.
‫Donc, cela suffira, c'est qu'il mettra en pause tout notre programme ou notre fil dans ce cas, la menace principale
‫ou la menace dans laquelle il se trouve pendant une seconde après la façon dont le mot a été imprimé à l'écran.
‫Et nous pouvons le faire après chaque déclaration.
‫Je vais donc dire simplement dormir pendant un laps de temps précis.
‫Et nous y sommes.
‫Bonjour.
‫Nous sommes un, deux, trois et quatre.
‫Donc ça s'arrête si je clique dessus.
‫Mais généralement, vous pouvez voir qu'il a attendu une seconde et qu'après cette seconde, il a imprimé la chose suivante.
‫Donc, ce qu'il fait simplement, il arrête vraiment l'ensemble du thread, suspend ainsi la menace actuelle pendant un nombre
‫spécifique ou spécifié de millisecondes.
‫C'est donc quelque chose que vous pouvez faire si vous voulez faire quelque chose après un laps de temps spécifique.
‫Mais sachez que cela arrête vraiment la principale menace.
‫Donc, rien de ce qui devra être fait n'aura à être fait, disons, dans le thread de l'interface utilisateur ne peut être fait.
‫Nous n'utilisons pas l'interface utilisateur ici.
‫Nous utilisons une application console dans ce cas.
‫Mais si vous utilisez WP, par exemple, pour avoir une interface utilisateur et que vous analysez le thread principal pendant une seconde, cela signifie
‫que l'interface utilisateur ne répondra pas pendant une seconde entière.
‫Et c'est quelque chose que l'utilisateur ne veut pas.
‫Et ce sera un très mauvais comportement que vous ne devriez pas faire.
‫Mais c'est généralement juste pour que vous compreniez ce que vous pouvez faire avec les threads ici, n'est-ce pas.
‫Vous pouvez donc constituer une menace pendant une durée déterminée.
‫Mais nous n'utilisons qu'un seul fil.
‫C'est la principale menace.
‫Et si vous voulez en savoir plus à ce sujet, alors vous devez déboguer.
‫Et pour ce faire, nous ajoutons un point ici.
‫Donc, juste pour déboguer le point où vous appuyez simplement sur cette barre ici à gauche, disons ajouter à la
‫ligne neuf où commence la méthode principale, puis vous démarrez le programme et comme vous pouvez le voir, rien ne sera affiché
‫car il s'arrête ici .
‫Voilà donc où nous en sommes actuellement.
‫C'est là que se trouve le curseur.
‫Et pour voir maintenant les tâches, nous devons aller dans les fenêtres de débogage, puis sélectionner les menaces ici.
‫Ou vous pouvez appuyer sur contrôler tous les H.
‫Je vais donc ouvrir des discussions.
‫Et comme vous pouvez le voir, ils flottent pour moi maintenant et je les positionnerai juste ici sur le côté
‫gauche.
‫Et maintenant, vous pouvez voir les threads en cours d'exécution.
‫Et dans notre cas, nous ne voyons que le fil conducteur.
‫Il n'y a donc qu'un seul thread et il a une idée gérée de zéro.
‫C'est donc notre principale menace et il fait généralement tout ce qui est dans notre méthode principale.
‫Donc si je passe à l'étape suivante.
‫Comme vous pouvez le voir, nous sommes toujours dans le fil conducteur et nous attendons une seconde, nous voyons comment le monde en fait si nous
‫l'ouvrons, ils peuvent le voir.
‫Alors maintenant, c'est un monde total.
‫Trois, on dort une seconde puis ça attend des heures avant de passer à l'étape suivante donc vous pouvez en avoir 10
‫pour passer à l'étape suivante.
‫Et puis il affiche Helliwell juste une seconde plus tard.
‫Oui, nous sommes tous pour.
‫Et puis cette ligne rouge apparaît.
‫Alors maintenant, je vais simplement appuyer sur quelque chose comme entrée ou autre et ici et passer à l'étape suivante.
‫Et comme vous pouvez le voir, nous sommes toujours dans la principale menace.
‫Et notre programme se ferme, donc plus de menace, donc c'est bon et tout, mais c'est juste notre principale menace et c'est
‫un peu ennuyeux.
‫Nous voulons voir comment créer des threads, et c'est pour cela que nous sommes là.
‫Alors allons-y et créons nous-mêmes plusieurs menaces, car ce qui se passe ici, c'est que cela se fait de
‫manière séquentielle.
‫Donc pas à pas, une rangée après l'autre.
‫Mais si nous voulons faire les choses en parallèle, nous pouvons créer notre propre thread car nous ne voulons pas qu'il s'exécute dans
‫le thread principal.
‫Mais nous voulions fonctionner en parallèle.
‫Donc ce que je vais faire, c'est créer une nouvelle menace ici.
‫Je vais juste dire nouveau, alors je vais l'appeler menace.
‫J'utilise donc simplement la clause de menace ici.
‫Et vous avez encore besoin de crochets et de crochets.
‫Et après ces parenthèses, la deuxième ici, vous utilisez des accolades sinusoïdales et bouclées égales et plus grandes.
‫Et puis après la fermeture du support ici, vous devez commencer.
‫C'est ainsi que vous démarrez un fil.
‫J'ai donc créé un nouveau fil et il démarre tout de suite parce que j'appelle start here.
‫C'est juste que la méthode start nous appelle le système d'exploitation pour changer l'état de l'instance actuelle en état
‫de thread en cours d'exécution.
‫Donc, ce thread aura cet état de thread en cours d'exécution, ce qui signifie qu'il exécutera simplement tout ce qui
‫se trouve entre ses accolades.
‫C'est donc là que nous pouvons ajouter notre code que nous voulons exécuter chaque fois que cette menace est appelée.
‫Alors disons que ce fil ici est notre fil un.
‫Donc je vais juste écrire quelque chose comme Thread one, CW thread one.
‫Et en plus de ça, je vais dormir une seconde.
‫Dormez donc pendant 1000 millisecondes, soit une seconde.
‫C'est donc ce que ce fil va faire.
‫Et ce que je vais faire, c'est positionner plusieurs fils en dessous.
‫Alors enfilez un, deux, trois et quatre.
‫Je vais donc les renommer et je vais commenter.
‫Ceux que nous avions auparavant, donc la console s'aligne bien et maintenant, lançons-la.
‫Et voilà, comme vous pouvez le voir, c'est arrivé tout en même temps, donc ça a attendu une seconde et puis
‫ils sont tous arrivés en même temps.
‫Que se passait-il donc là-bas ?
‫Permettez-moi d'aborder ce point ici et peut-être le point.
‫Ouais, juste là.
‫Alors exécutons-le à nouveau.
‫Maintenant, nous voyons que notre programme s'arrête ici, c'est donc là qu'il se trouve, mais en même temps
‫ici dans la fenêtre de thread ici en bas, vous pouvez voir qu'il y a déjà deux threads ouverts et un thread de travail
‫sans nom.
‫Et une autre menace pour les travailleurs sans nom également.
‫Nous avons donc cette nouvelle menace qui court déjà.
‫Et puis l'une des autres menaces est également ouverte.
‫Et comme vous pouvez le voir, la principale menace aussi.
‫Il y a donc trois menaces en même temps.
‫Passons maintenant à l'étape suivante.
‫Comme vous pouvez le voir, à ce moment-là, il y a soudainement quatre menaces.
‫Et c'est donc les quatrièmes que nous avons ici.
‫Ainsi, lorsque le premier a commencé, seul le second était peut-être déjà prêt, mais les autres n'étaient pas encore
‫prêts.
‫Et maintenant, à ce stade où la menace balaie mille millisecondes après qu'une milliseconde s'est écoulée ou même moins, vous
‫pouvez voir que les autres menaces ont déjà commencé.
‫Nous avons donc quatre threads en cours d'exécution en même temps.
‫Nous avons donc ici une solution multi-threading.
‫Et si je passe à l'étape suivante, eh bien, comme vous pouvez le voir, les menaces deux, trois et quatre sont déjà affichées.
‫Mais la première menace de la ligne droite de la console, comme vous pouvez le voir, n'est pas encore affichée.
‫Ils fonctionnent donc en parallèle, mais ils ne sont pas parfaitement précis, comme vous pouvez le voir.
‫Il peut donc y avoir de légères différences dans le temps nécessaire à leur exécution.
‫Je vais donc passer à l'étape suivante comme cette route ici.
‫Et comme vous pouvez le voir maintenant, la première menace est également exécutée.
‫Donc, même si les menaces.
‫Sont dans un ordre spécifique ici, dans mon code, ils sont démarrés plus ou moins en même temps et comme vous pouvez
‫le voir, il n'a pas besoin d'être dans l'ordre exact que nous pensions.
‫Il ne sera donc pas terminé dans l'ordre exact dans lequel nous les avons positionnés ici.
‫Mais en fonction de la vitesse à laquelle ils pouvaient terminer ou exécuter quel que soit le code.
‫Il peut donc arriver que ce code nécessite un peu plus de temps que celui-là ou beaucoup plus de temps que l'autre.
‫C'est donc ce que vous devez retirer de cela pour pouvoir gérer les menaces, mais vous devez être très,
‫très prudent car il y a potentiellement plusieurs choses qui pourraient mal tourner.
‫Et je vais couvrir certains d'entre eux et je vais vous montrer ou vous donner et je vais couvrir certains d'entre
‫eux.
‫Et je vais également partager des liens avec vous.
‫Nous pouvons lire beaucoup plus à ce sujet.
‫Voilà donc l'idée de base de la façon de créer des menaces.
‫Comme vous pouvez le voir, c'est ainsi que vous pouvez configurer les choses.
‫Ainsi, les menaces sont généralement un petit travail ou un travail qui est exécuté et vous pouvez exécuter plusieurs
‫choses en même temps si vous avez plusieurs cours dans votre processeur.
‫Supposons donc que vous ayez un processeur à quatre cœurs, puis quatre threads ou quatre processeurs en même
‫temps peuvent être exécutés.
‫Si vous n'avez, disons, qu'un seul processeur, alors un seul thread ou une seule tâche à la fois peut être exécuté,
‫il n'arrivera jamais qu'ils soient exécutés en parallèle car ce processeur ne fait qu'une chose spécifique à
‫la fois.
‫Cela signifie que si vous savez que vous travaillez avec un processeur multicœur ou que votre application fonctionnera
‫sur un processeur multicœur, vous pouvez travailler avec plusieurs menaces.
‫Sinon, vous rencontrez des problèmes.
‫Mais en général, comment cela fonctionne, si vous n'avez qu'un seul cœur, le thread principal s'exécutera.
‫Et seulement si la menace principale est inactive, alors elle ira de l'avant et fera d'autres choses afin qu'elle ne lance pas d'autres
‫menaces.
‫Disons que vous avez une interface utilisateur et que sur cette interface utilisateur, vous affichez simplement des choses, vous avez un bouton.
‫Ensuite, si vous survolez le bouton, il changera d'apparence, des trucs comme ça.
‫C'est quelque chose qui est fait par la menace principale.
‫Mais si la menace principale n'est pas occupée, les autres menaces commenceront.
‫Donc, si vous avez quelque chose qui doit être exécuté en arrière-plan, cela sera fait chaque fois que la menace un,
‫la menace principale n'est pas occupée ou les menaces zéro en fait cette année.
‫C'est donc une question de menaces.
‫Et nous examinerons un peu plus les menaces, bien sûr.
‫Mais généralement, c'est ce que je voulais vous montrer pour commencer.