|
Size: 2717
Comment: Removed two links.
|
Size: 2678
Comment: Sorted functions in example to remove a prototype.
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 20: | Line 20: |
| Line 25: | Line 24: |
| static int TestThread(void *ptr); | // Very simple thread - counts 0 to 9 delaying 50ms between increments static int TestThread(void *ptr) { int cnt; for (cnt = 0; cnt < 10; ++cnt) { printf("\nThread counter: %d", cnt); SDL_Delay(50); } // Return the final value to the SDL_WaitThread function above return cnt; } |
| Line 49: | Line 60: |
// Very simple thread - counts 0 to 9 delaying 50ms between increments static int TestThread(void *ptr) { int cnt; for (cnt = 0; cnt < 10; cnt++) { printf("\nThread counter: %d", cnt); SDL_Delay(50); } // Return the final value to the SDL_WaitThread function above return cnt; } |
SDL_WaitThread
Use this function to wait for a thread to finish.
Syntax
void SDL_WaitThread(SDL_Thread* thread,
int* status)
Function Parameters
thread |
the SDL_Thread pointer that was returned from the SDL_CreateThread() call that started this thread |
status |
pointer to an integer that will receive the value returned from the thread function by its 'return', see Remarks for details |
Code Examples
#include <stdio.h>
#include "SDL_thread.h"
#include "SDL_timer.h"
// Very simple thread - counts 0 to 9 delaying 50ms between increments
static int TestThread(void *ptr)
{
int cnt;
for (cnt = 0; cnt < 10; ++cnt) {
printf("\nThread counter: %d", cnt);
SDL_Delay(50);
}
// Return the final value to the SDL_WaitThread function above
return cnt;
}
int main(int argc, char *argv[])
{
SDL_Thread *thread;
int threadReturnValue;
printf("\nSimple SDL_CreateThread test:");
// Simply create a thread
thread = SDL_CreateThread(TestThread, "TestThread", (void *)NULL);
if (NULL == thread) {
printf("\nSDL_CreateThread failed: %s\n", SDL_GetError());
} else {
// Wait for the thread to complete. The thread functions return code will
// be placed in the "threadReturnValue" variable when it completes.
//
SDL_WaitThread(thread, &threadReturnValue);
printf("\nThread returned value: %d", threadReturnValue);
}
return 0;
}
Remarks
Wait for a thread to finish. Threads that haven't been detached will remain (as a "zombie") until this function cleans them up. Not doing so is a resource leak.
Once a thread has been cleaned up through this function, the SDL_Thread that references it becomes invalid and should not be referenced again. As such, only one thread may call SDL_WaitThread() on another.
The return code for the thread function is placed in the area pointed to by status, if status is not NULL.
You may not wait on a thread that has been used in a call to SDL_DetachThread(). Use either that function or this one, but not both, or behavior is undefined.
It is safe to pass a NULL thread to this function; it is a no-op.
Note that the thread pointer is freed by this function and is not valid afterward.
