Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek
|
SDL_WaitThread
SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby zaczekać na zakończenie się wybranego wątku.
void SDL_WaitThread(SDL_Thread* thread, int* status) |
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. |
#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; } |
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.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 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.