Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 22.02.2026

©2026 mgr Jerzy Wałaszek

Interfejs SDL2:

SDL_SemWait

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_SemWait

Użyj tej funkcji, aby zaczekać na przyjęcie dodatniej wartości przez semafor, po czym zmniejszyć go o 1.

Składnia

int SDL_SemWait(SDL_sem* sem)

Parametry funkcji

sem semafor, dla którego wykonywane jest oczekiwanie.

Wartość zwracana

Zwraca 0 przy sukcesie lub ujemny kod błędu przy niepowodzeniu; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Przykładowy kod

SDL_atomic_t done;
SDL_sem *sem;

SDL_AtomicSet(&done, 0);
sem = SDL_CreateSemaphore(0);
.
.
Thread A:
    while (!SDL_AtomicGet(&done))
    {
        add_data_to_queue();
        SDL_SemPost(sem);
    }

Thread B:
    while (!SDL_AtomicGet(&done))
    {
        SDL_SemWait(sem);
        if (data_available())
        {
            get_data_from_queue();
        }
    }
.
.
SDL_AtomicSet(&done, 1);
SDL_SemPost(sem);
wait_for_threads();
SDL_DestroySemaphore(sem);

Uwagi

Funkcja ta zawiesza działanie wywołującego ją wątku aż albo semafor wskazywany przez sem będzie posiadał dodatnią wartość, albo wywołanie zostanie przerwane przez sygnał lub błąd. Jeśli wywołanie się powiedzie, wartość semafora zostanie atomowo zmniejszona o 1.

Funkcja jest ekwiwalentem wywołania SDL_SemWaitTimeout() z czasem oczekiwania równym SDL_MUTEX_MAXWAIT.

Powiązane funkcje

SDL_CreateSemaphore
SDL_DestroySemaphore
SDL_SemPost
SDL_SemTryWait
SDL_SemValue
SDL_SemWait
SDL_SemWaitTimeout

do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.