Create a new thread with a default stack size.
Defined in <SDL3/SDL_thread.h>
const char *name, void *data); SDL_Thread * SDL_CreateThread(SDL_ThreadFunction fn,
SDL_ThreadFunction | fn | the SDL_ThreadFunction function to call in the new thread. |
const char * | name | the name of the thread. |
void * | data | a pointer that is passed to fn . |
(SDL_Thread *) 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.
This is a convenience function, equivalent to calling SDL_CreateThreadWithProperties with the following properties set:
SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER
: fn
SDL_PROP_THREAD_CREATE_NAME_STRING
: name
SDL_PROP_THREAD_CREATE_USERDATA_POINTER
: data
Note that this "function" is actually a macro that calls an internal function with two extra parameters not listed here; they are hidden through preprocessor macros and are needed to support various C runtimes at the point of the function call. Language bindings that aren't using the C headers will need to deal with this.
Usually, apps should just call this function the same way on every platform and let the macros hide the details.
This function is available since SDL 3.1.3.
#include <SDL3/SDL.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) {
"Thread counter: %d", cnt);
SDL_Log(50);
SDL_Delay(
}
return cnt;
}
int main(int argc, char *argv[])
{
SDL_Thread *thread;int threadReturnValue;
"Simple SDL_CreateThread test:");
SDL_Log(
/* Simply create a thread */
"TestThread", (void *)NULL);
thread = SDL_CreateThread(TestThread,
if (NULL == thread) {
"SDL_CreateThread failed: %s", SDL_GetError());
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, else {
}
SDL_WaitThread(thread, &threadReturnValue);"Thread returned value: %d", threadReturnValue);
SDL_Log(
}
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
*/