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: 31.07.2022

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_WaitThread

SPIS TREŚCI

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

SDL_WaitThread

Użyj tej funkcji, aby zaczekać na zakończenie się wybranego wątku.

Składnia

void SDL_WaitThread(SDL_Thread* thread,
                    int*        status)

Parametry funkcji

thread wskaźnik wątku SDL_Thread, który został zwrócony przez wywołanie funkcji SDL_CreateThread(), które uruchomiło ten wątek
status wskaźnik danej całkowitej, która otrzyma wartość zwróconą przez funkcję wątku po wykonaniu przez nią polecenia 'return'; zobacz do Uwag.

Przykładowy kod

#include <stdio.h>
#include "SDL_thread.h"
#include "SDL_timer.h"

// Bardzo prosty wątek - liczy od 0 do 9 z opóźnieniem 50 ms pomiędzy kolejnymi zliczeniami
static int TestThread(void *ptr)
{
    int cnt;

    for (cnt = 0; cnt < 10; ++cnt)
    {
        printf("\nThread counter: %d", cnt);
        SDL_Delay(50);
    }

    // Zwróć końcową wartość do funkcji SDL_WaitThread poniżej
    return cnt;
}

int main(int argc, char *argv[])
{
    SDL_Thread *thread;
    int         threadReturnValue;

    printf("\nSimple SDL_CreateThread test:");

    // Po prostu utwórz wątek
    thread = SDL_CreateThread(TestThread, "TestThread", (void *)NULL);

    if (NULL == thread)
    {
        printf("\nSDL_CreateThread failed: %s\n", SDL_GetError());
    }
    else
    {
        // Czekaj na zakończenie wątku. Kod zwrócony przez funkcję wątku zostanie
        // umieszczony w zmiennej "threadReturnValue", gdy funkcja się zakończy.
        //
        SDL_WaitThread(thread, &threadReturnValue);
        printf("\nThread returned value: %d", threadReturnValue);
    }

    return 0;
}

Uwagi

Czekanie na zakończenie wątku. Wątki, które nie zostały odłączone, pozostaną (jako "zombie") aż ta funkcja je wyczyści. Jeśli tego się nie zrobi, wystąpi wyciek zasobów.

Po wyczyszczeniu wątku poprzez tę funkcję jego wskaźnik SDL_Thread staje się nieaktualny i nie powinien być ponownie użyty. W ten sposób tylko jeden watek może wywołać SDL_WaitThread() z innym wątkiem.

Kod zwracany przez funkcję wątku jest umieszczany w obszarze wskazywanym przez wskaźnik status, o ile nie ma on wartości NULL.

Nie wolno ci czekać na wątek, który został użyty w wywołaniu funkcji SDL_DetachThread(). Używaj albo tamtej funkcji, albo tej, lecz nie obu, inaczej zachowanie się aplikacji jest nieokreślone.

Do funkcji można przekazać bezpiecznie wartość NULL jako wskaźnik wątku, oznacza to brak operacji.

Zwróć uwagę, że wskaźnik wątku jest zwalniany przez tę funkcję i przestaje być dalej aktualny.

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
©2022 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.