extern DECLSPEC SDL_Thread* SDLCALL SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char* name, const size_t stacksize, void* data)
fn | 新しいスレッドで呼ぶ関数 |
name | スレッドの名前 |
stacksize | 新しいスレッドのスタックのサイズのバイト数 |
data | fnへ渡すポインタ |
SDLはスレッドの名前をシステムに伝え, デバッガがその名前を表示する. 全ての環境が対応しているとは限らない.
スレッドの命名はやや複雑である: 多くのシステムでは長さに強い制限があり(Haikuならば32バイト, Linuxならば16バイト, Visual C++ 6.0ならば9バイト!), さらに独自の規則が存在する場合もある. それぞれのシステムのデバッガで何が起こるか調べる必要がある. 名前はUTF-8である必要がある(しかし, C識別子の名前の制限に従った方がよい). スレッドには命名規則はなく, UTF-8で終端がNUL文字ならばよい. しかし, 名前を選ぶとき, 次の指針が助けになるだろう:
https://stackoverflow.com/questions/149932/naming-conventions-for-threads
システムの要求があれば, SDLは名前を変更(短くするなど)しようとするが, 元の名前はSDL_GetThreadName()で得られる.
新しいスタックのサイズ(バイト数)は指定できる. 0は「システムの規定値」を表し, 環境で大きく異なる. x86 Linuxは通常は8メガバイトだが, 組み込みデバイスならば数キロバイトかもしれない. 一般的に, スタックサイズはシステムのページサイズ(多くの場合4キロバイトだが, システムのドキュメントを確認すること)の倍数を指定する必要がある.
SDL 2.1では, スタックサイズは元のSDL_CreateThread()関数に統合される. しかし, 後方互換性のため, 現在は別の関数となっている.