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

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

SDL2

Interfejs SDL2:

SDL_SemWaitTimeout

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2. Oryginał znajdziesz pod tym adresem: https://wiki.libsdl.org/CategoryAPI.

SDL_SemWaitTimeout

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

Składnia

int SDL_SemWaitTimeout(SDL_sem* sem,
                       Uint32   ms)

Parametry funkcji

sem semafor, dla którego wykonywane jest oczekiwanie.
ms maksymalny czas oczekiwania w milisekundach.

Wartość zwracana

Zwraca 0, jeśli oczekiwanie zakończyło się powodzeniem, SDL_MUTEX_TIMEDOUT, jeśli oczekiwanie się nie powiodło w przydzielonym czasie, 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:
    const Uint32 timeout = 1000; /* wybudzaj się co sekundę */

    while (!SDL_AtomicGet(&done))
    {
        if (SDL_SemWaitTimeout(sem, timeout) == 0 && data_available())
        {
            get_data_from_queue();
        }
        ... /* wykonaj dalsze przetwarzanie */
    }
.
.
SDL_AtomicSet(&done, 1);
SDL_SemPost(sem);
wait_for_threads();
SDL_DestroySemaphore(sem);

Uwagi

Funkcja ta wstrzymuje wywołujący ją wątek do momentu aż albo semafor wskazywany przez sem posiada dodatnią wartość, albo wywołanie zostanie przerwane przez sygnał lub błąd, albo upłynie określony czas. Jeśli wywołanie się powiedzie, wartość semafora zostanie atomowo zmniejszona o 1.

Powiązane funkcje

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 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.