‫Bentornato e in questo video, esamineremo i thread e quindi faremo solo il concetto di base
‫dei thread in cui vedrai come creare un thread e come creare più thread.
‫Quindi iniziamo utilizzando la riga di destra della console in questo modo specifico.
‫Quindi creerò più mondi, per esempio, quattro, e dirò ciao, mondo uno,
‫ciao, mondo due, tre e quattro.
‫Quindi questi sono i mondi.
‫Se li eseguiamo, ovviamente, abbiamo bisogno, prima di tutto, di ribasatura della console.
‫Quindi la console rimane aperta e rimane sveglia.
‫Se li eseguiamo, allora è molto basilare cosa accadrà.
‫Quindi stamperanno Hello World quattro volte sullo schermo e avremo un mondo uno, due, tre
‫e quattro.
‫Tutto bene.
‫Quindi non è niente di nuovo.
‫Lo abbiamo visto molto prima.
‫C'è qualcosa chiamato thread, una classe chiamata thread.
‫E se vogliamo usarlo, dobbiamo usare lo spazio dei nomi di threading.
‫Quindi, usando il dot threading di sistema e il gioco è fatto.
‫Quindi ora possiamo usare i thread in modo che io possa andare avanti e usare la classe thread e come puoi vedere, crea e
‫controlla un thread, imposta le sue priorità e ottiene il suo stato.
‫Quindi quello che possiamo fare ora è, ad esempio, usare thread che dormono per un periodo di tempo limitato.
‫Quindi diciamo per 1000 millisecondi.
‫Quindi quello farà è mettere in pausa il nostro intero programma o il nostro thread in questo caso, la minaccia
‫principale o la minaccia in cui si trova per un secondo dopo come la parola uno è stata stampata sullo schermo.
‫E possiamo effettivamente farlo dopo ogni singola affermazione.
‫Quindi dirò solo di dormire per un determinato periodo di tempo.
‫E ci siamo.
‫Ciao.
‫Siamo uno, due, tre e quattro.
‫Quindi si ferma se ci clicco sopra.
‫Ma generalmente puoi vedere che ha aspettato un secondo e dopo quel secondo ha stampato la cosa successiva.
‫Quindi, ciò che fa semplicemente, interrompe davvero l'intero thread, quindi sospende la minaccia attuale per un numero specifico
‫o specificato di millisecondi.
‫Quindi è qualcosa che puoi fare se vuoi fare qualcosa dopo un determinato periodo di tempo.
‫Ma tieni presente che questo sta davvero fermando la minaccia principale.
‫Quindi nulla di ciò che dovrà essere fatto, diciamo, nel thread dell'interfaccia utente può essere fatto.
‫Non stiamo usando l'interfaccia utente qui.
‫In questo caso stiamo usando un'applicazione console.
‫Ma se usi WP, ad esempio, per avere un'interfaccia utente e analizzi il thread principale per un secondo, ciò significa
‫che l'interfaccia utente non risponderà per un secondo intero.
‫E questo è qualcosa che l'utente non vuole.
‫E questo sarà un pessimo comportamento che non dovresti fare.
‫Ma questo è generalmente solo per te per capire cosa puoi fare con i thread qui, giusto.
‫Quindi puoi rappresentare una minaccia per un determinato periodo di tempo.
‫Ma stiamo usando un solo thread.
‫È la principale minaccia.
‫E se vuoi saperne di più, devi eseguire il debug.
‫E per farlo, aggiungiamo qui un punto.
‫Quindi, solo per eseguire il debug del punto in cui premi semplicemente su quella barra qui a sinistra, diciamo che aggiungi
‫la riga nove in cui inizia il metodo principale, quindi avvii il programma e come puoi vedere, non verrà visualizzato nulla perché
‫si interrompe proprio qui .
‫Quindi è lì che siamo attualmente.
‫Ecco dove si trova il cursore.
‫E per vedere ora le attività, dobbiamo andare a eseguire il debug di Windows e quindi selezionare le minacce qui.
‫Oppure puoi premere control all H.
‫Quindi aprirò i thread.
‫E come puoi vedere, stanno fluttuando per me ora e li posizionerò proprio qui sul lato
‫sinistro.
‫E ora puoi vedere i thread in esecuzione.
‫E nel nostro caso vediamo solo il thread principale.
‫Quindi c'è solo un thread e ha un'idea gestita di zero.
‫Quindi questa è la nostra principale minaccia e generalmente fa tutto ciò che rientra nel nostro metodo principale.
‫Quindi, se vado al passaggio successivo.
‫Come puoi vedere, siamo ancora nel thread principale e aspettiamo un secondo, vediamo come il mondo in realtà se
‫lo apriamo, possono vederlo.
‫Quindi ora è un mondo totale.
‫Tre, dormiamo per un secondo e poi aspettiamo per ore il passaggio successivo in modo che tu possa averne 10 per
‫andare al passaggio successivo.
‫E poi mostra Helliwell solo per un secondo dopo.
‫Sì, siamo tutti per questo.
‫E poi arriva questa linea rossa.
‫Quindi ora premo qualcosa come invio o altro e qui e vado al passaggio successivo.
‫E come puoi vedere, siamo ancora la minaccia principale.
‫E il nostro programma si chiude, quindi nessuna minaccia più, quindi va bene e tutto, ma questa è solo la nostra minaccia principale ed è
‫un po' noiosa.
‫Vogliamo vedere come creare thread, ed è per questo che siamo qui.
‫Quindi andiamo avanti e creiamo minacce multiple da soli, perché quello che succede qui è che è fatto
‫in sequenza.
‫Quindi passo dopo passo, una riga dopo l'altra.
‫Ma se vogliamo fare le cose in parallelo, possiamo creare il nostro thread perché non vogliamo che venga eseguito
‫nel thread principale.
‫Ma volevamo correre paralleli.
‫Quindi quello che farò è creare una nuova minaccia qui.
‫Dirò solo nuovo, poi lo chiamerò minaccia.
‫Quindi sto solo usando la clausola di minaccia qui.
‫E hai bisogno di parentesi e parentesi.
‫E dopo quelle parentesi, la seconda qui dentro, usi seno uguale e più grande e parentesi graffe.
‫E poi, dopo che la parentesi qui si chiude, devi iniziare.
‫Quindi è così che inizi un thread.
‫Quindi ho creato un nuovo thread e inizia subito perché chiamo start qui.
‫Questo è solo il metodo start che ci chiama il sistema operativo per cambiare lo stato dell'istanza corrente allo
‫stato del thread in esecuzione.
‫Quindi questo thread avrà questo stato del thread in esecuzione, il che significa che eseguirà semplicemente tutto ciò che è
‫all'interno delle sue parentesi graffe.
‫Quindi è qui che possiamo aggiungere il nostro codice che vogliamo eseguire ogni volta che viene chiamata questa minaccia.
‫Quindi diciamo che questo thread qui è il nostro thread uno.
‫Quindi scriverò qualcosa come Thread uno, thread CW uno.
‫E per di più, vado a dormire per un secondo.
‫Quindi dormi per 1000 millisecondi, che è un secondo.
‫Quindi questo è ciò che farà questo thread.
‫E quello che farò è posizionare più thread al di sotto di quello.
‫Quindi filo uno, due, tre e quattro.
‫Quindi li rinominerò e commenterò.
‫Quelli che avevamo prima, quindi la console allinea correttamente e ora eseguiamola.
‫Ed eccoci qua, come puoi vedere, è venuto fuori tutto nello stesso momento, quindi ha aspettato un secondo e poi
‫sono venuti fuori tutti allo stesso tempo.
‫Allora cosa stava succedendo lì?
‫Permettetemi di approfondire questo punto qui e forse il punto.
‫Sì, proprio lì.
‫Quindi eseguiamolo di nuovo.
‫Ora vediamo che il nostro programma si ferma proprio qui, quindi è lì che si trova, ma allo
‫stesso tempo qui nella finestra del thread qui in basso, puoi vedere che ci sono già due thread aperti e un thread di lavoro
‫senza nome.
‫E anche un'altra minaccia per i lavoratori senza nome.
‫Quindi abbiamo questa nuova minaccia che è già in esecuzione.
‫E poi viene aperta anche una delle altre minacce.
‫E come puoi vedere, anche la minaccia principale.
‫Quindi ci sono tre minacce contemporaneamente.
‫Ora, andiamo al passaggio successivo.
‫Come puoi vedere, a quel punto, improvvisamente ci sono quattro minacce.
‫E quindi questi sono i quarti che abbiamo qui.
‫Quindi, come è iniziato il primo, solo forse il secondo era già pronto, ma gli altri non erano ancora
‫pronti.
‫E ora a quel punto in cui la minaccia si estende per mille millisecondi dopo che è trascorso un millisecondo o anche
‫meno, puoi vedere che le altre minacce sono già iniziate.
‫Quindi abbiamo quattro thread in esecuzione contemporaneamente.
‫Quindi abbiamo una soluzione multi threading qui.
‫E se faccio il passaggio successivo, beh, come puoi vedere, le minacce due, tre e quattro sono già visualizzate.
‫Ma la prima minaccia della linea di destra della console, come puoi vedere, non viene ancora visualizzata.
‫Quindi funzionano in parallelo, ma non sono perfettamente precisi, come puoi vedere.
‫Quindi possono esserci lievi differenze nel tempo in cui devono essere eseguiti.
‫Quindi andrò al prossimo passo come questa strada qui.
‫E come puoi vedere ora, anche la minaccia uno è finita.
‫Quindi, anche se le minacce.
‫Sono in un ordine specifico qui, nel mio codice, vengono avviati più o meno contemporaneamente e come
‫puoi vedere, non è necessario che siano nell'ordine esatto come pensavamo.
‫Quindi non sarà finito nell'ordine esatto in cui li abbiamo posizionati qui.
‫Ma in base alla velocità con cui potevano finire o eseguire qualunque fosse il codice.
‫Quindi può succedere che questo codice richieda un po' più di quello o molto più lungo dell'altro.
‫Questo è quello che devi trarre da tutto questo in modo da poter lavorare con le minacce, ma devi stare
‫molto, molto attento perché ci sono potenzialmente più cose che potrebbero andare storte.
‫E ne coprirò alcuni e ve li mostrerò o ve li darò e ne coprirò alcuni.
‫E condividerò anche i link con te.
‫Possiamo leggere molto di più in questo.
‫Quindi si tratta dell'idea di base di come creare minacce.
‫Come puoi vedere, è così che puoi impostare le cose.
‫Quindi le minacce sono generalmente un piccolo pezzo di lavoro o un pezzo di lavoro che viene eseguito e
‫puoi eseguire più cose contemporaneamente se hai più corsi nel tuo processore.
‫Quindi diciamo che hai un processore a quattro core, quindi possono essere eseguiti quattro thread o
‫quattro processori contemporaneamente.
‫Se si dispone, diciamo, di un solo processore, quindi è possibile eseguire solo un thread o un'attività alla volta,
‫non accadrà mai che verranno eseguiti in parallelo perché questo processore esegue solo una cosa specifica
‫alla volta.
‫Ciò significa che se sai che stai lavorando con un processore multicore o che la tua applicazione verrà
‫eseguita su un processore multicore, puoi lavorare con più minacce.
‫Altrimenti ti imbatti in problemi.
‫Ma generalmente come funziona, se hai solo un core, verrà eseguito il thread principale.
‫E solo se la minaccia principale è inattiva, allora andrà avanti e farà altre cose in modo da non eseguire altre
‫minacce.
‫Diciamo che hai un'interfaccia utente e su quell'interfaccia vengono visualizzate solo le cose, hai un pulsante.
‫Quindi, se passi con il mouse sul pulsante, cambierà il suo aspetto, cose del genere.
‫Questo è qualcosa che viene fatto dalla minaccia principale.
‫Ma se la minaccia principale non è occupata, inizieranno le altre minacce.
‫Quindi, se hai qualcosa che dovrebbe essere eseguito in background, allora questo verrà fatto ogni volta che la minaccia uno,
‫la minaccia principale non è occupata o le minacce sono pari a zero quest'anno.
‫Quindi si tratta di minacce.
‫E esamineremo un po' di più le minacce, ovviamente.
‫Ma in generale, è quello che volevo mostrarti per iniziare.