目次 - API(機能別) - スレッド - SDL_CreateThreadWithStackSize

# SDL_CreateThreadWithStackSize

スタックサイズを指定して新しいスレッドを生成する

## 構文

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

## 引数

fn | 新しいスレッドで呼ぶ関数
name | スレッドの名前
stacksize | 新しいスレッドのスタックのサイズのバイト数
data | fnへ渡すポインタ

## 戻り値

成功のとき新しいスレッドオブジェクトへの不透明ポインタ(opaque pointer), 失敗のときNULLを戻す. SDL_GetError()で詳細を知ることができる.

## 詳細

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()関数に統合される. しかし, 後方互換性のため, 現在は別の関数となっている.

## バージョン

SDL 2.0.9以降

## 関連項目(関数)

SDL_WaitThread

## SDL Wikiへのリンク

SDL_CreateThreadWithStackSize - SDL Wiki