|
Size: 3010
Comment: Added static keyword in example (from Feedback, although it is no error).
|
Size: 2973
Comment: Sorted functions in example to remove a prototype.
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 31: | Line 31: |
| 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 cnt; } |
| Line 51: | Line 62: |
| } // 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 cnt; |
SDL_CreateThread
Use this function to create a new thread.
Contents
Syntax
SDL_Thread* SDL_CreateThread(SDL_ThreadFunction fn,
const char* name,
void* data)
Function Parameters
fn |
the function to call in the new thread; see Remarks for details |
name |
the name of the thread; see Remarks for details |
data |
a pointer that is passed to fn |
Return Value
Returns an opaque pointer to the new thread object on success, NULL if the new thread could not be created; call SDL_GetError() for more information.
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 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 {
SDL_WaitThread(thread, &threadReturnValue);
printf("\nThread returned value: %d", threadReturnValue);
}
return 0;
}
Output:
Simple SDL_CreateThread test:
Thread counter: 0
Thread counter: 1
Thread counter: 2
Thread counter: 3
Thread counter: 4
Thread counter: 5
Thread counter: 6
Thread counter: 7
Thread counter: 8
Thread counter: 9
Thread returned value: 10
Remarks
SDL_CreateThread() creates a new thread of execution that shares all of its parent's global memory, signal handlers, file descriptors, etc, and runs the function fn, passing it the void pointer data. The thread quits when fn returns.
The function prototype for fn is:
int SDL_ThreadFunction(void* data)
- where its parameter is:
data
what was passed as data to SDL_CreateThread()
There are no requirements for thread naming conventions, so long as the string is null-terminated UTF-8, but these guidelines are helpful in choosing a name:
If a system imposes requirements, SDL will try to munge the string for it (truncate, etc), but the original string contents will be available from SDL_GetThreadName().
