|
Witaj na naszym forum!
Nie jesteś zalogowany. (Logowanie - Rejestracja) |
![]() |
|
Google
|
To jest wiadomość reklamowa. | ||
|
Grupa: Goście
|
|
||
|
|||
|
|||
|
Administrator
![]() ![]() ![]() Grupa: Administratorzy Posty: 436 Reputacja: Klejnot w koronie Ostrzeżenia: ![]() Rejestracja: Czwartek 20:42 03.07.2008 |
Jako, że jakiś czas temu obiecałem napisac na ten temat, więc pisze ;].
SEMAFOR Semafory (w ogólnym skrócie) to najczęściej pewne zmienne w pamięci współdzielonej jądra systemu (innym przykładem semaforow są semafory plikowe, ale o tym dziś nie będę pisał ZASTOSOWANIE Semafory pozwalają nam na kontrolę nad tym, ile procesów w jednej chwili może mieć dostęp do jakiegoś zasobu (zależy od tego, co programista chce chronić za pomocą semafora). Dokładniejszy opis znajduje się np pod tym adresem: http://pl.wikipedia.org/wiki/Semafor_(informatyka) SEMAFORY W PHP UWAGA: Aby skorzystać z semaforów w PHP w sposób podany przeze mnie musisz posiadać wkompilowane rozszerzenie sysvsem. Poniżej podaję najprostsze uzycie semafora w PHP. Kod
$sem_code = 9999; $sem_count = 1; if(!$sem_id = sem_get($sem_code, $sem_count)){ echo 'Nie można utworzyć semafora'; }elseif(!sem_acquire($sem_id)){ echo 'Nie mozna utworzyc semafora'; }else{ [Tutaj podajemy kod, ktory ma sie wykonać w przypadku zablokowania (utworzenia) semafora] sem_release($sem_id); } Po kolei: * $sem_code -> identyfikator. Każdy semafor musi mieć przypisany unikalny identyfikator * $sem_count -> ile procesów na raz może wykonać kod w semaforze * $sem_id -> identyfikator semafora utworzony w pamięci * sem_get -> próbuje utworzyć identyfikator semafora w pamięci, w przypadku błędu przerywa działanie powyższego kodu * sem_acquire -> próbuje utworzyć własciwy semafor. W przypadku niemożności utworzenia (semafor został utworzony przez inny proces) pauzuje wykonywanie CAŁEGO skryptu do momentu gdy inny proces odblokuje semafor. W przypadku odblokowania semafora przez inny proces aktualny proces tworzy nowy semafor w pamięci Przykładowe użycie tego kodu to np przetwarzanie flot, a dokładniej wywołanie przetwarzania. ProGamela korzysta z tego rozwiązania od ponad 1.5 roku i dzięki temu serwer oraz gra działają bardzo szybko. Dlaczego? Dlatego ze nigdy nie zdarza się aby 2 graczy uruchomiło skrypt liczący floty w locie a jak każdy wie jest to bardzo zasobożerny skrypt Na razie to tyle. Postaram się dopisać jeszcze troszkę informacji jak dostane się do mojego kodu Ostatnio zmieniano Wtorek 21:31 13.04.2010 przez hemicalyaction. Razem zmieniano 5 razy.
|
||
|
|||
|
|||
|
Lantean
![]() ![]() ![]() Grupa: Administratorzy Posty: 900 Reputacja: Klejnot w koronie Ostrzeżenia: ![]() Lokalizacja: Polska, Ostrzeszów Rejestracja: Poniedziałek 08:03 28.12.2009 |
przydatne - choć skromnie opisane
|
||
|
|||
|
Google
|
To jest wiadomość reklamowa. | ||
|
Grupa: Goście
|
|
||
|
|||
![]() |
| Przejdź do: |
  |
| Kontakt | Wersja lekka | Niedziela 15:05 05.09.2010 |
![]() |