2017-12-12 18 views
0

私はライブラリとしてSDLを使用するC++ 11でアプリケーションを開発しています。私は自分のアプリケーションのマルチスレッドサポートを追加する予定です。私のアプリケーションでSDL_Threadとstd :: threadを使用するかどうかに違いはありますか?SDLとC++の11スレッド

+0

SDLは、選択された実装に応じて、pthreadなどのシステム固有の実装をターゲットにするだけでなく、C++スレッドも使用できます。具体的なことがあなたの問題にとって重要であるなら、SDLとC++の両方が何をしているのか確かめてください。 SDLはおそらく、スレッド・スタック・サイズ(*スレッド・インプリメンテーションとしてC++スレッドを使用していない場合は*) – keltar

答えて

1

特にSDLのスレッドハンドルタイプを必要とするSDL APIの一部を使用しているのでない限り、C++のstd::threadを使用する方がよいでしょう。 APIはより慣用的です(たとえば、関数を開始するために引数を転送できるコンストラクタ)。そのコードをSDLが提供するものに結びつけません。

実際にSDL_Thread *を渡す必要がある場合は、現在のスレッドのハンドルを照会する方法がありません。許可されたstd::threadはこれを提供しませんが、インターフェイスが豊富なので、使用するのがより理にかなっています。

編集:どちらのインターフェイスもPOSIXスレッドから大きく派生しているようですが、例外は1つあります。 std::threadには、取り消し機能が組み込まれていません。通常、何らかのクリーンアップをせずにスレッドを強制終了したくないのですが、言及する価値はあります。