multithreading
Multithreading (alias Multithreading) au în cele mai multe limbaje de programare. Cărțile în limba rusă poți veni de multe ori peste termenul de „fir“ în legătură cu „curgă“. În general, „fir“ este tradus ca „fir“, dar nu „flux“, dar termenul este mai consistente semantica fluxului de fir „s. Voi suna-i fluxuri.
Care este fluxul. sistem de operare multitasking Vkratse se realizează prin comutarea constantă între diferite sarcini. Fiecare dintre ele efectuează un anumit moment, dar nu este conștient de o pauză în activitatea sa (corect dacă greșit). Aici am ajuns la operedeleniyu proces. Vypolnyaeiuyu fiecare program poate fi numit un proces. El se identifică în memoria principală și devine timpul CPU pentru a executa.
Flow - o sarcină în cadrul unui singur proces. Alimentare folosește procesul de memorie, adică, o multitudine de filamente în cadrul procesului funcționează cu o memorie adiacente pentru ei, și, ca urmare, nuzhnayutsya în controlul accesului la date.
Imaginați-vă următoarea situație: fir efectuează anumite acțiuni atomice necesită consumatoare de timp. Termenul „consumatoare de timp“ ar trebui să fie înțeles, astfel încât fluxul de execuție a acestei acțiuni se va întrerupe cu siguranță, și alte fire care accesează aceste date vor fi în măsură să schimbe datele, munca pe care nu a fost încă finalizată. În consecință, pot apărea erori în integritatea datelor, și de a face astfel de erori greu de detectat din cauza șansa de apariție (depanare nu poate fi).
Acum puteți merge direct pentru a lucra cu fluxuri în .NET în C #. Pentru streaming de care aveți nevoie să vă conectați la System.Threading clasei spațiu de nume. Principalul obiectiv este clasa de fir (de fapt, „fir“). Fluxul este asociat cu o funcție, pe care o va efectua la locul de muncă. Funcția Out duce la zavereshniyu flux.
Luați în considerare crearea, punerea în funcțiune și încetarea fluxului de lucru.
Filet = nou Subiect (nou ThreadStart (FUNC));
În paranteze indică delegatul stochează un pointer la funcția de flux. Delegații au adoptat două tipuri: o funcție de primire pentru setarea și funcții fără parametru (ParametrizedThreadStart și ThreadStart, respectiv). Despre delegații s-ar putea scrie mai târziu.
următor:
thread.Start (); sau thread.Start (obj); - zupask cu sau fără parametri.
thread.Abort (); - opri fluxul. În acest caz, funcția de fir este generat ThreadAbortException excepție și, dacă doriți să știți despre încetarea prematură a fluxului de lucru, trebuie să-l ocupe. În cazul în care nu sunt tratate cu nimic groaznic se va întâmpla.
Suspendare și Reluare sunt metode de sincronizare ustrevshimi.
Pentru a bloca circulația fluxului într-un obiect comun în memorie, puteți utiliza blocarea operatorului. În acest caz, în cazul în care un fir este deja în blocul de blocare acest obiect, celălalt nu poate intra în ea, și va aștepta pentru obiectul de deblocare.