..


Gesponsorde links

Evenwijdig programmeren in C + +

Artikel geschreven door Stefano Cancedda
Pagina 1 van 6

Sequentieel programmeren biedt de garantie dat u de instructies altijd worden uitgevoerd in orde zijn, zonder variaties. De resulterende gedrag is deterministisch: het plaatsen van de dezelfde input, output wordt verkregen hetzelfde resultaat.
Voor elk programma dat het besturingssysteem zorgt voor een proces dat een beveiligd geheugen ruimte geeft. Dit biedt de mogelijkheid dat onafhankelijke processen tegelijk actief zijn zonder fouten.

Verschillende (en meer geavanceerde) is de gelijktijdige programmering. Voordat de belegering wordt geïntroduceerd en hoe het werkt, naar mijn mening, een bepaald type object met de naam een kernel thread.

Als objecten Kernel onderwerpen die worden beheerd door het besturingssysteem, en hebben twee fundamentele kenmerken:

  • Elke draad heeft een eigen datastructuur, die zijn eigen stack, behalve informatie, de volgende instructie uit te voeren winkels;
  • Elke draad deelt met het hele proces een gemeenschappelijk geheugen ruimte.
Het gebruik van threads heeft een aantal voordelen in termen van uitvoering. In het bijzonder, wij volledig gebruik maken van de prestaties van de multi-core CPU's, die op dit moment de dominante technologie in de markt voor personal computers. Het ondenkbaar is dat een bepaalde complexiteit van de moderne applicaties zijn ontworpen in een sequentiële wijze, kan dus profiteren van de tijd, slechts een van de kern die de machine biedt.

Een ander voordeel, het kan gezien worden als twee verschillende processen die dezelfde code, misschien met verschillende parameters, minder efficiënt zijn dan twee draden die direct kunnen profiteren van de gedeeld geheugen. In een systeem dat niet ondersteunt draden, als je wilt uitvoeren meerdere keren hetzelfde programma, moet u meer banen op basis van hetzelfde programma. Deze techniek werkt, maar is verspilling van middelen en is langzamer.

Ten derde, de draden hebben het voordeel als zij worden opgeroepen de I / O-blokkers: in plaats van te wachten tot het evenement veroorzaakt door de gebruiker het stoppen van de uitvoering van het algoritme, kunt u een nieuwe discussie te starten en te voorkomen dat onnodige downtime dat verergert de algemene prestaties.

In tegenstelling tot de concurrent programming heeft de steun nodig van synchronisatie constructen, die fundamenteel zijn voor willekeurige toegang tot gedeelde geheugen leiden tot fouten in de productie te voorkomen. Ook loopt de programmeur om een reeks van fouten vaak slecht gevoed door het onvoorspelbare gedrag van deterministische programma.

Daarnaast is de synchronisatie construeert een kostprijs, zowel in termen van de machine de tijd die nodig is om hun code uit te voeren in een bepaalde prestatie verlies veroorzaakt door de verwachtingen die door deze constructies om eerlijkheid te garanderen bij de uitvoering van concurrent.

De belangrijkste objecten die voor het beheer van mededinging mogelijk te maken worden hieronder verwacht en in detail beschreven in de volgende paragrafen:

  • Vluchtige elementen
  • Vergrendeld Functies
  • Verkeerslichten
  • Kritische secties
  • Events
  • Timer
  • Mutex
Elk van deze elementen passen in een natuurlijke manier om een ​​specifieke klasse van eenvoudige problemen op te lossen. Voor meer complexe problemen alleen maar combineren deze objecten tot een correct resultaat en bevredigende passage van de oplossing van problemen die het gebruik van een van de vroegste en de problemen die zijn gedefinieerd als hierboven moet krijgen is een complex zeer kritisch. De combinatie van synchronisatie objecten kan ingewikkeld zijn, op zijn best, want je kunt niet een voldoende hoge prestaties in het slechtste geval, want je kunt niet snel de oplossing die de juistheid van het resultaat zorgt. Niet in het minst het ergste geval: er is een fatale fout en niet meteen identificeren. Dit moment is zeer frequent, zowel omwille van de gevoeligheid van de kwesties die we zullen bespreken, is het feit dat debuggen altijd problematisch is bij gelijktijdige omgeving, de stromen zijn in feite deterministische uitvoering, elk uitvoering van het programma, de volgorde de processor voert de operaties is altijd anders.

In dezelfde categorie ...
E-Learning
Java (Cursus) Java (Cursus)
OOP programmeren in Java zon Van 49 €.
Javascript (Cursus) Javascript (Cursus)
Complete gids voor client-side scripting. Van 39 €.
Web Design (Course) Web Design (Course)
Design Web Sites met HTML, CSS en Dynamic HTML. Van 39 €.
Gesponsorde links