====== (This is the documentation for SDL3, which is under heavy development and the API is changing! [https://wiki.libsdl.org/SDL2/ SDL2] is the current stable version!) ====== = SDL_CreateThread = Create a new thread with a default stack size. == Syntax == extern DECLSPEC SDL_Thread *SDLCALL SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); == Function Parameters == {| |'''fn''' |the [[SDL_ThreadFunction]] function to call in the new thread |- |'''name''' |the name of the thread |- |'''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. == Remarks == This is equivalent to calling: SDL_CreateThreadWithStackSize(fn, name, 0, data); == Version == This function is available since SDL 3.0.0. == Code Examples == #include "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) { SDL_Log("Thread counter: %d\n", cnt); SDL_Delay(50); } return cnt; } int main(int argc, char *argv[]) { SDL_Thread *thread; int threadReturnValue; SDL_Log("Simple SDL_CreateThread test:\n"); /* Simply create a thread */ thread = SDL_CreateThread(TestThread, "TestThread", (void *)NULL); if (NULL == thread) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_CreateThread failed: %s\n", SDL_GetError()); } else { SDL_WaitThread(thread, &threadReturnValue); SDL_Log("Thread returned value: %d\n", 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 == Related Functions == :[[SDL_CreateThreadWithStackSize]] :[[SDL_WaitThread]] ---- [[CategoryAPI]], [[CategoryThread]]