..


Sponzorované odkazy

Súčasné programovanie v C POSIX

Článok napísaný Markom Frisoni
Strana 1 z 5

Všetky moderné operačné systémy trvať roky, než sa model riešenia multi-proces priraďovanie prevedení a pamäte na rôzne programy bežia súčasne. V poslednom čase, a to predovšetkým vďaka všadeprítomnosť komunikačnej siete, toto poňatie bolo rozšírené na jednotlivých softvérových, tak, že sa rovnaký proces viac tokov v oblasti sledovania týchto vlákien. Tento nový prístup prináša obrovské zmeny v štruktúre softvéru, a to ako v teórii aj v praxi, ako to vždy býva, modularity a expresivita sú vyplácané v podobe zvýšenej zložitosti softvéru.

Programovacích jazykov najnovšie, Java, všetky ponúkajú natívne API pre tvorbu a správu vlákna, systémy založené na virtuálnom stroji, ako je Java a C # má developer úrovni abstrakcie zodpovedajúcej na túto tému a všetky ostatné musí sa spoliehať na operačný systém primitív, často vznikajú problémy prenosnosti kódu. V tomto kontexte, knižnice sú súčasťou POSIX (pthreads), ktorý umožňuje vývojárom C aj minimálne záruky prenositeľnosť medzi rôznymi systémami.

Predpoklady

Tento článok je určený pre všetkých, ktorí chcú pristupovať k problému súčasných programovacích jazykov na nízkej úrovni. Táto prezentácia predpokladá, že čitateľ už získal základné znalosti jazyka C, nebudú považované za základné témy, ako je napríklad správa pamäte a dátové typy.

POSIX vlákna knižnice

Ako možno ľahko uhádnuť z jeho názvu, POSIX vlákna knižnice sú súčasťou sady POSIX (Portable rozhranie operačného systému [pre Unix]). Citovať definícia "pthread [...] špecifikuje sadu rozhraní (funkcia, hlavičkové súbory) pre závitové programovanie na jeden proces môže [...] obsahovať viac vlákien, z ktorých všetky sú rovnaké spustenie programu [...] Rovnaký podiel globálnej pamäte (dáta a halda segmenty), ale jeho Každé vlákno má vlastný zásobník. " Tento úryvok popisuje presne to, co sa podieľa na plánovaní multi-vlákna v prostredí POSIX:

  • viacnásobná kontrola tokov (vlákna), v jednom procese;
  • Zdieľanie pamäte, obsahuje kód (dáta segment) a dynamické pamäte (haldy segmentu);
  • súkromné ​​stack.
Čo nie je jasne je stav registrov, a to najmä tie základný, ako je "ukazovateľ inštrukcií a ukazovateľ zásobníka, takže určiť, že všetky záznamy sú prísne súkromné, aby každé vlákno a uloží / obnoví po toku konania sa presunula od medzi závitmi (závit prepínanie).

Použitie štandardu POSIX poskytuje vysokú úroveň integrácie všetkých POSIX-kompatibilné systémy, ako je napríklad GNU / Linux, Mac OS X, BSD, a dokonca aj Microsoft Windows (s niektorými doplnkami). Počas tohto článku sa budeme odkazovať na používanie prekladača GCC sa pod GNU / Linux, samozrejme, všetky úvahy prevedené na iné POSIX podobné prostredia.

Prvý (chybné) napr

Knižnica pthread.h ponúka všetko, čo potrebujete pre programovanie v multi-vlákna, skôr než aby len zoznam ponúkaných primitív, budeme predstavovať praktický príklad z času na čas diskutovať o ich rozdiely.

Takže zvážte nasledovné problém: bankovým prevodom program na čítanie súborov z rôznych zberu a / alebo Kaucia sa na účet, takže tieto súbory budú mať nasledujúce podobu:






 120







 -550







 896







 5541







 -85







 ...



Ak chcete urýchliť rôzne závity "Pokladňa" prevádzkujú na jednom súbore a zároveň aktualizovať účtu zákazníka, sme vykonali všetky operácie výstup stav účtu.

V rovnakej kategórii ...
E-Learning
Linux (kurz) Linux (kurz)
Kompletný sprievodca pre open-source systém. Od 49 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databázu. Od 39 €.
OpenOffice (ebook) OpenOffice (ebook)
Open-source softvér pre riadenie úradu práce. Na iba 25 €.
Sponzorované odkazy