16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LEKCJA 21: KILKA PROCESÓW JEDNOCZEŚNIE.<br />

________________________________________________________________<br />

W trakcie tej lekcji dowiesz się, jak to zrobić, by Twój PC mógł<br />

wykonywać kilka rzeczy jednocześnie.<br />

________________________________________________________________<br />

Procesy współbieżne.<br />

Sprzęt, czyli PC ma możliwości zdecydowanie pozwalające na<br />

techniczną realizację pracy wielozadaniowej. Nie ma też żadnych<br />

przeciwskazań, by zamiast koprocesora umożliwić w PC instalację<br />

drugiego (trzeciego) równoległego procesora i uprawiać na PC<br />

poważne programowanie współbieżne. Po co? To proste. Wyobraź<br />

sobie Czytelniku, że masz procesor pracujący z częstotliwością<br />

25 MHz (to 25 MILIONÓW elementarnych operacji na sekundę!).<br />

Nawet, jeśli wziąć pod uwagę, że niektóre operacje (dodawanie,<br />

mnożenie, itp.) wymagają wielu cykli - i tak można w<br />

uproszczeniu przyjąć, że Twój procesor mógłby wykonać od<br />

kilkuset tysięcy do kilku milionów operacji w ciągu sekundy.<br />

Jeśli pracujesz np. z edytorem tekstu i piszesz jakiś tekst -<br />

znacznie ponad 99% czasu Twój procesor czeka KOMPLETNIE<br />

BEZCZYNNIE (!) na naciśnięcie klawisza. Przecież Twój komputer<br />

mogłby w tym samym czasie np. i formatować dyskietkę (dyskietka<br />

też jest powolna), i przeprowadzać kompilację programu, i<br />

drukować dokumenty, i przeprowadzić defragmentację drugiego<br />

dysku logicznego, itp. itd..<br />

Nawet taka pseudowspółbieżność realizowana przez DOS, Windows,<br />

czy sieć jest ofertą dostatecznie atrakcyjną, by warto było<br />

przyjrzeć się mechanizmom PSEUDO-współbieżności w C i <strong>C++</strong>.<br />

Współbieżność procesów, może być realizowana na poziomie<br />

* sprzętowym (architektura wieloprocesorowa),<br />

* systemowym (np. Unix, OS/2),<br />

* nakładki (np. sieciowej - time sharing, token passing)<br />

* aplikacji (podział czasu procesora pomiędzy różne<br />

funkcje/moduły tego samego pojedynczego programu).<br />

My zajmiemy się tu współbieżnością widzianą z poziomu aplikacji.<br />

Funkcje setjmp() (ang. SET JuMP buffer - ustaw bufor<br />

umożliwiający skok do innego procesu) i longjmp() (ang. LONG<br />

JuMP - długi skok - poza moduł) wchodzą w skład standardu C i w<br />

związku z tym zostały "przeniesine" do wszystkich kompilatorów<br />

<strong>C++</strong> (nie tylko Borlanada).<br />

Porozmawiajmy o narzędziach.<br />

Zaczniemy od klasycznego zestawu narzędzi oferowanego przez<br />

<strong>Borland</strong>a. Aby zapamiętać stan przerwanego procesu stosowana jest<br />

w C/<strong>C++</strong> struktura PSS (ang. Program Status Structure) o nazwie<br />

jmp_buf (JuMP BUFfer - bufor skoku). W przypadku współbieżności<br />

- 215-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!