Hlavný rozdiel : Závit a proces sú dva výrazne súvisiace pojmy v multi-threading. Hlavný rozdiel medzi týmito dvoma pojmami spočíva v tom, že vlákna sú súčasťou procesu, tj proces môže obsahovať jeden alebo viac vlákien, ale vlákno nemôže obsahovať proces.
Pri programovaní existujú dve základné jednotky vykonávania: procesy a vlákna. Obaja vykonajú sériu pokynov. Oba sú iniciované programom alebo operačným systémom. Tento článok pomáha rozlišovať medzi týmito dvoma jednotkami.
Proces má vlastné vykonávacie prostredie. Má kompletnú sústavu súkromných základných zdrojov run-time; najmä každý proces má svoj vlastný pamäťový priestor. Procesy sa často považujú za podobné s inými programami alebo aplikáciami. Spustenie jedinej žiadosti však môže byť v skutočnosti súborom spolupracujúcich procesov. Na uľahčenie komunikácie medzi procesmi používajú väčšina operačných systémov zdroje internej komunikácie (IPC), ako sú napríklad potrubia a zásuvky. Prostriedky IPC sa môžu použiť aj na komunikáciu medzi procesmi v rôznych systémoch. Väčšina aplikácií vo virtuálnom stroji funguje ako jeden proces. Môže však vytvoriť ďalšie procesy pomocou objektu vytvárania procesov.
V počítačoch môže vlákno vykonať aj tie najmenšie sekvencie naprogramovaných pokynov, ktoré môžu byť nezávisle riadené operačným systémom. Aplikácie vlákien a procesov sa líšia od jedného operačného systému k druhému. Avšak vlákna sú vyrobené a existujú v procese; každý proces má aspoň jeden. Viaceré vlákna môžu existovať v procese a zdieľať zdroje, čo pomáha pri efektívnej komunikácii medzi vláknami.
V jednom procesore dochádza k viacnásobnému spracovaniu, keď procesor prepína medzi rôznymi vláknami; je známy ako multithreading. Prepínanie sa deje tak často, že vlákna alebo úlohy sú vnímané ako beží súčasne. Vlákna môžu byť skutočne súbežné v multiprocesorovom alebo viacjadrovom systéme, pričom každý procesor alebo jadro vykonávajú súčasne samostatné vlákna.
Stručne povedané, vlákna môžu byť považované za ľahké procesy, pretože obsahujú jednoduché sady inštrukcií a môžu bežať v rámci väčšieho procesu. Počítače môžu spúšťať viac vlákien a procesov súčasne.
Porovnanie medzi procesom a vláknom:
proces | závit | |
definícia | Vykonávacia inštancia programu sa nazýva proces. | Niť je podmnožinou procesu. |
proces | Má vlastnú kópiu dátového segmentu rodičovského procesu. | Má priamy prístup k dátovému segmentu svojho procesu. |
komunikácia | Procesy musia používať komunikáciu medzi procesmi na komunikáciu so súrodenskými procesmi. | Nite môžu priamo komunikovať s inými vláknami svojho procesu. |
režijné | Procesy majú značné režijné náklady. | Nite nemajú takmer žiadne režijné náklady. |
stvorenia | Nové procesy vyžadujú duplicitu rodičovského procesu. | Nové vlákna sa dajú ľahko vytvoriť. |
ovládanie | Procesy môžu vykonávať kontrolu nad detskými procesmi. | Vlákna môžu mať značnú kontrolu nad vláknami toho istého procesu. |
zmeny | Akákoľvek zmena rodičovského procesu nemá vplyv na detské procesy. | Akákoľvek zmena v hlavnom vlákne môže ovplyvniť správanie ostatných vlákien procesu. |
Pamäť | Spustite v oddelených pamäťových priestoroch. | Spustite v priestoroch zdieľanej pamäte. |
Deskriptory súborov | Väčšina deskriptorov súborov nie je zdieľaná. | Zdieľa deskriptory súborov. |
Systém súborov | Neexistuje zdieľanie kontextu súborového systému. | Zdieľa kontext súborového systému. |
signál | Zdieľanie signálu nezdieľa. | Zdieľa spracovanie signálu. |
Kontrolované | Proces je riadený operačným systémom. | Vlákna sú riadené programátorom v programe. |
závislosť | Procesy sú nezávislé. | Vlákna sú závislé. |