..


Linki sponsorowane

Programowanie współbieżne w C + +

Artykuł napisany przez Stefano Cancedda
Strona 1 z 6

Programowanie sekwencyjne oferuje gwarancji, że instrukcje są zawsze wykonywane w kolejności, bez zmian. Zachowanie wynikające jest deterministyczny: wkładanie tych samych danych wejściowych, wyjściowych otrzymuje się ten sam wynik.
Dla każdego programu działającego systemu operacyjnego tworzy proces, który daje chronionym obszarze pamięci. Daje to możliwość, że niezależne procesy działają jednocześnie bez błędów.

Różne (i bardziej zaawansowanych) jest jednocześnie programowania. Przed oblężeniem ma być wprowadzony i jak to działa, w mojej opinii, konkretnego typu obiektu o nazwie wątku jądra.

Jako obiekty wątki jądra są zarządzane przez system operacyjny, a nie dwie podstawowe cechy:

  • Każdy wątek ma prywatną strukturę danych, która przechowuje swój własny stos, informacje wyjątku następnej instrukcji do wykonania;
  • Każda akcja temat z całego procesu wspólnego obszaru pamięci.
Korzystanie z tematów ma kilka zalet w zakresie wykonania. W szczególności w pełni wykorzystać wydajność procesorów wielordzeniowych, które są obecnie dominującą technologią na rynku komputerów osobistych. Nie do pomyślenia jest, że pewna złożoność nowoczesnych aplikacji zostały zaprojektowane w sposób sekwencyjny, co można wykorzystać czas, tylko jeden z głównych, że maszyna zapewnia.

Jako jeszcze jedną zaletę, może być postrzegane jako dwa różne procesy uruchomione tego samego kodu, być może z różnych parametrów, są mniej wydajne niż dwa wątki, które można bezpośrednio wykorzystać w pamięci współdzielonej. W systemie, który nie obsługuje wątki, jeśli chcesz uruchomić kilka razy ten sam program, należy utworzyć więcej miejsc pracy na podstawie tego samego programu. Ta technika działa, ale to marnotrawstwo zasobów i jest wolniejszy.

Po trzecie, wątki mają tę przewagę, jeśli są one nazywane I / O blokery: zamiast czekać na zdarzenie wywołane przez użytkownika zatrzymania realizacji algorytmu, możesz rozpocząć nowy wątek i uniknąć niepotrzebnych przestojów że pogarsza ogólną wydajność.

W przeciwieństwie do jednoczesnego programowania potrzebuje wsparcia konstrukcje synchronizacji, które są niezbędne, aby uniknąć przypadkowych dostęp do wspólnych powodować błędy pamięci w produkcji. Ukazuje też programiście szereg błędów często źle odżywionych, ze względu na nieprzewidywalne zachowanie deterministyczne programu.

Poza tym, konstrukcje synchronizacji za sobą koszty, zarówno pod względem czasu maszyny potrzebne do wykonania ich kodu w szczególności utrata wydajności spowodowanych oczekiwania generowane przez tych konstrukcji w celu zapewnienia uczciwości w wykonywaniu konkurenta.

Główne obiekty, które pozwalają na zarządzanie konkurencji przewiduje się poniżej i szczegółowo opisane w poniższych punktach:

  • Lotne elementy
  • Zablokowane funkcje
  • Światła
  • Sekcji krytycznej
  • Wydarzenia
  • Zegar
  • Mutex
Każdy z tych elementów mieści się w naturalny sposób do rozwiązania określonej klasy prostych problemów. W przypadku problemów bardziej złożonych po prostu połączyć te obiekty ze sobą, aby uzyskać poprawny wynik i zadowalające przejście rozwiązywania problemów, które wymagają wykorzystania jednego z najstarszych i problemów, które są zdefiniowane jak wyżej jest złożonym bardzo krytycznie. Połączenie obiektów synchronizacji może być skomplikowane, w najlepszym razie, ponieważ nie można uzyskać wystarczająco wysoką wydajność w najgorszym przypadku, ponieważ nie można łatwo znaleźć rozwiązanie, które gwarantuje poprawność wyniku. Nie najmniej najgorszym przypadku: jest jakiś błąd krytyczny i nie od razu zidentyfikować. Tym momencie jest bardzo częste, zarówno ze względu na wrażliwość kwestie omówimy, jest fakt, że błędów jest zawsze problematyczne w równoczesnym środowisku, przepływy są w realizacji deterministycznych rzeczywistości, każda realizacji programu, aby procesor wykonuje działania jest zawsze inny.

W tej samej kategorii ...
E-Learning
Flash MX (zaawansowane) Flash MX (zaawansowane)
Zostań projektantem stron internetowych od 29 €.
Javascript (Kurs) Javascript (Kurs)
Kompletny przewodnik po stronie klienta skryptów. Od 39 €.
MS Access (zaawansowane) MS Access (zaawansowane)
Dowiedz się, jak tworzyć i zarządzać bazami danych szybko i łatwo. Począwszy od 29 €.
Linki sponsorowane