08.mart: Grafika i niti - Korišćenje niti u aplikacijama + video klipovi
1. Pogledajte video (na našem je jeziku ):
Za domaći zadatak uraditi program u kojem radi semafor, (koji radi kao semafor na ulici).
izazov: Da li možete da kreirate raskrsnicu?
---------------
Novo Gradivo:
Rad sa nitima - Thread i MULTITHREADING
2. Pogledajte kratak video:
3. TEORIJA i objašnjenje:
Rad sa nitima u C# programskom jeziku
Skoro svaki korisnik PC računara kod svoje kuće koristi računar sa jednim CPU – Central Processing Unit – centralnim procesorom, koji u suštini obavlja samo jednu operaciju u datom vremenu. Zbog velike brzine procesora, mi često imamo utisak da na primer računar obavlja više poslova istovremeno kad otvorimo više aplikacija u Windows-u. Međutim, činjenica je dok se jedna operacija obavlja, druge čekaju. Na primer: kad vam se pojavi neki veliki bag u računaru, to često znači da se neka operacija na procesorskom nivou izvršava previše vremena ili se ne može izvršiti do kraja i zbog toga vam tada izgleda da vam je celi Windows smrznut i slika na monitoru ukočena, sve dok ne resetujete računar.
Da se ne bi stalno dešavalo da svaka aplikacija zamrzne celi Windows pri svakoj komplikaciji tokom rada, stvoren je koncept korišćenja niti. Svaka aplikacija u Windows-u pokreće svoj vlastiti proces koji je izolovan od drugih aplikacija. Znači, svaki proces pokreće vlastiti thread – nit; nit shvatite jednostavno kao virtualni CPU. Nit je sekvenca izvršavanja programa. Većina programa koje programirate u C# programskom jeziku ima jednu ulaznu tačku, to je metoda Main() i završava se povratkom iz metode. Međutim, ni jedan Internet pretraživač ne radi na taj način. Oni kao da izvršavaju više zadataka istovremeno. I vi ćete dolaziti u situacije u vašim programima da vam je potrebno da obavljate neke funkcije bar prividno istovremeno. Svaka nit u Windows-u ima svoje određeno vreme koje se meri u milisekundima i nakon tog perioda nit se pauzira i Windows se prebacuje na drugu nit. Takvo ponašanje zovemo Context Switching. Koristeći niti mi izvršavamo procese bez čekanja da se prethodni proces završi. Na taj način mi samo stvaramo iluziju da se izvršava više niti u isto vreme. Kod više procesorskih računara gde imamo više CPU, koristimo Parallelism – paralelizam; gde se niti izvršavaju paralelno na više različitih CPU. Na koje sve načine možete da izvršavate Multithreating – izvršavanje više niti; najbolje da vidite šta vam .Net Framework nudi.
Kako se kreira nit koristeći Thread klasu?
Da biste najjednostavnije manipulisali nitima koristite Thread klasu koja se nalazi u System.Threading imenskom prostoru. Instanca klase Thread predstavlja jednu nit; jednu sekvencu
izvršavanja. Drugu nit možete da formirate tako što konkretizujete objekat niti. Klasa Thread vam jednostavno omogućava da kreirate nove niti, kontrolišete njihova svojstva i dobijate status niti. Opet treba da znate da niti treba da
koristite samo ako imate dobar razlog za to. Pogledajte praktičan primer kako se pravi nit.
B: 1
A: 1
B: 2
A: 2
B: 3
A: 3
B: 4
A: 4
B: 5
A: 5
Kako navedeni program izgleda možete pogledati i na video-u:
Kako da kreiram nit u background-u?
Postoje dve vrste niti, foreground thread – nit koja se izvršava u prvom planu i background thread - nit koja se izvršava u pozadini. Mnogo je bitno znati razliku. Po defaultu sve niti se izvršavaju u prvom planu i to jednostavno znači da se vaša aplikacija ne može ugasiti dok se sve niti ne izvrše. Ukoliko ste kreirali nit koja radi u pozadini, vaša aplikacija se može ugasiti i ako nit nije izvršena. Da bi se vaša nit izvršavala u pozadini dovoljno je podesiti properti IsBackground na true pre pokretanja niti. Pogledajte sledeći program.
( C# 6.0 Tutorial - Advanced - 7. Thread Background )
Izvor: https://www.manuelradovanovic.com/2016/04/rad-sa-nitima-u-c-programskom-jeziku.html
3. deo: Kako da se koristi
Backgroundworker
unutar .Net-a
(komponenta koja postoji u Toolbox-u)
