Robotyzacja.com

..robotyka wokół naszych myśli

  • Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Automatyka i Robotyka C++ Współbieżność Realizacja semafora binarnego

Realizacja semafora binarnego

Email Drukuj
Ocena użytkowników: / 3
SłabyŚwietny 
Realizacja  funkcji wait atomowo-niepodzielnie
 
void  wait_bin(int* _bin_semafor){
        _asm {  
             mov  eax,0x01
             mov  edx,[_bin_semafor]
         _xx:    xchg [edx],eax
             test eax,eax
             jnz  _xx
             }
}
 

Realizacja  funkcji signal atomowo-niepodzielnie
 
void  signal_bin(int* _bin_semafor){
        _asm{   
            mov eax,[_bin_semafor] //*_bin_semafor=0;
            mov [eax],0x00
            }
}
 
Użycie semafora
 
int semafor;
semafor=0;
wait_bin(&semafor) ;
//semafor będzie równy 1
//inne procesy będą się tu blokowały
//SEKCJA  KRYTYCZNA
signal_bin(&semafor);
//podniesienie semafora (nadanie wartości 0)
//czyli zwolnienie sekcji krytycznej 
 
 
Naszą witrynę przegląda teraz 4 gości 

Szukaj artykułu

Partnerzy