SDL_thread.h

Función SDL_CreateThreadWithStackSize

Sintaxis

extern DECLSPEC SDL_Thread *SDLCALL
SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);

Descripción

Crea un nuevo hilo con el tamaño de pila especificado.

Parámetros

fn
La función SDL_ThreadFunction a invocar en el nuevo hilo.
name
El nombre del hilo.
stacksize
El tamaño en bytes a reservar para la pila del nuevo hilo.
data
Un puntero que será pasado a fn.

Valor de retorno

Devuelve un puntero opaco al nuevo objeto hilo si tiene éxito o NULL si el nuevo hilo no pudo ser creado. Ver SDL_GetError.

Observaciones

SDL hace un intento de reportar el nombre al sistema, para que los depuradores puedan mostrarlo. No todas las plataformas soportan esto.

Nombrar hilos es un poco complicado: La mayoría de los sistemas tienen límites muy pequeños para la longitud de la cadena (Haiku tiene 32 bytes, Linux actualmente tiene 16, ¡Visual C++ 6.0 tiene nueve!), y posiblemente otras reglas arbitrarias. Se tendrá que ver qué pasa con el depurador en cada sistema. El nombre debería ser UTF-8 (pero usar los límites de nomenclatura de los identificadores C es una mejor apuesta). No hay requisitos para las convenciones de nomenclatura de hilos, siempre y cuando la cadena sea UTF-8 con terminación nula, pero estas directrices son útiles para elegir un nombre:

https://stackoverflow.com/questions/149932/naming-conventions-for-threads.

Si un sistema impone requisitos, SDL tratará de adaptar la cadena para ello (truncar, etc), pero el contenido original de la cadena estará disponible desde SDL_GetThreadName().

Se puede especificar el tamaño (en bytes) de la nueva pila. Cero significa "usar el valor por defecto del sistema" que puede ser muy diferente entre plataformas. x86 Linux generalmente tiene por defecto ocho megabytes, un dispositivo embebido puede tener unos pocos kilobytes en su lugar. Generalmente se necesita especificar una pila que sea un múltiplo del tamaño de página del sistema (en muchos casos, esto es 4 kilobytes, pero se debe revisar la documentación de su sistema).

En SDL 2.1, el tamaño de la pila se incluirá en la función original SDL_CreateThread, pero por compatibilidad con versiones anteriores, actualmente es una función separada.