..


Sponzorované odkazy

Současné programování v C POSIX

Článek napsaný Markem Frison
Strana 1 z 5

Všechny moderní operační systémy trvat roky, než se model multi-procesní řízení, zadávání provedení a paměti na různé programy běží současně. V posledních letech, zejména díky všudypřítomnost komunikační sítě, toto pojetí bylo rozšířeno na jednotlivých softwarových, tak, že se stejný proces více toků kontrole těchto vláken. Tento nový přístup přináší obrovské změny ve struktuře softwaru, a to jak v teorii, tak v praxi, jako vždy se stane, modularity a expresivita jsou vypláceny v podobě zvýšené složitosti softwaru.

Programovacích jazyků nejnovější, Java, všechny nabízejí nativní API pro tvorbu a správu vlákna, systémy založené na virtuálních strojích, jako jsou Java a C # mají Developer úroveň abstrakce konzistentní na toto téma a všechny ostatní musí se spoléhat na primitiv operačního systému, často vznikají problémy přenositelnosti kódu. V této souvislosti jsou knihovny součástí POSIXu (pthreads) tak, aby C vývojáři také minimální záruky přenositelnost mezi různými systémy.

Předpoklady

Tento článek je určen pro každého, kdo chce přistupovat k tématu souběžné programování v jazycích nízké úrovni. V této prezentaci se předpokládá, že čtenář již získali základní znalosti jazyka C, nebudou považovány za základní témata, jako je například správa paměti a datové typy.

POSIX vlákna knihovny

Jak snadno uhodnout z názvu, POSIX vlákna knihovny jsou součástí sady POSIX (Portable rozhraní operačního systému [pro Unix]). S odkazem na definici "pthread [...] specifikuje sadu rozhraní (funkce, hlavičkové soubory) pro závitové programovacího procesu na jednotlivé [...] může obsahovat více vláken, z nichž všechny jsou provedení vyšetření programu [...] Stejný podíl globální paměti (data a halda segmenty), ale jeho Každé vlákno má vlastní zásobník. " Tento úryvek popisuje přesně to, co se podílí na multi-programování vlákna POSIX:

  • vícenásobná kontrola toků (vlákna), do jednoho procesu;
  • Sdílení paměti, obsahuje kód (data segment) a dynamické paměti (haldy segmentu);
  • soukromé stack.
Co není jasně je stav záznamů, zejména jako základní ukazatel instrukcí a ukazatel zásobníku, takže určit, že všechny záznamy jsou přísně soukromé pro každé vlákno a uloží / obnoví po toku řízení se přesunul z mezi závity (závit přepínání).

Použití standardu POSIX poskytuje vysokou úroveň integrace všech POSIX-kompatibilní systémy, jako je například GNU / Linux, Mac OS X, BSD i Windows (s některými doplňky). V celém tomto článku se budeme odkazovat na použití GCC pod GNU / Linux, samozřejmě, jsou všechny úvahy převedeny na jiné POSIX-jako je životní prostředí.

První (nesprávné), např.

Knihovna pthread.h nabízí vše, co potřebujete pro programování v multi-vlákna, spíše než aby pouze výpis za předpokladu, primitivy, budeme představovat praktický příklad z času na čas diskutovat o jejich rozdíly.

Takže zvažte následující problém: program musí číst z bankovní převod několika souborů ze sběru a / nebo vklad musí být provedeny na účet, pak se tyto soubory budou mít následující podobu:






 120







 -550







 896







 5541







 -85







 ...



Pro urychlení různých vláknech "Pokladna" provozují na jednom souboru a aktualizuje současně účtu klienta, jsme provedli všechny operace uvedené ve výstupu stavu účtu.

Ve stejné kategorii ...
E-Learning
Front Page (ebook) Front Page (ebook)
Vytváření webových stránek bez znalosti HTML. Pouhých 25 €.
Java (kurz) Java (kurz)
OOP programování v Javě ne. Od 49 €.
VB.NET (kurz) VB.NET (kurz)
Udělat Desktopové aplikace pomocí jazyka Visual Basic .. Od 49 €.
Sponzorované odkazy