2012-04-24 14 views
0

C++でCreateThread()関数に関する疑問があります。CreateThread()のThreadIdの重要性C++

この関数のthreadIdパラメータの重要性は何ですか?

同じthreadIdを使用して同じスレッド(同じ名前)を作成できますか? like

 DWORD threadId = 0; 
    CreateThread(NULL, 0, Thread1, NULL,0, &threadId); 
    CreateThread(NULL, 0, Thread1, NULL,0, &threadId); 

この方法は可能ですか? threadIdにはどのような値が含まれますか?上記のコードを行うことで、2番目のスレッドの作成は、最初のスレッドのthreadIdの値を上書きしますか?

答えて

3

ハンドルを保持している場合はスレッドを操作するためにthreadIdは必要ありません。ただし、代わりにIDを保持してから、OpenThreadで取得したハンドルを使用することもできます。 (これはプロセス間でも動作しますが、IDをOpenThreadで送信することで、スレッドへのハンドルを別のプロセスに「転送」できる唯一の方法です)。

ジョブをスレッドに配布するためのIDを使用することもできます(独自のIDを作成することはできますが)。

最後に、には、PostThreadMessage関数を呼び出すときなど、スレッドIDが必要です。

1

この関数のthreadIdパラメータの重要性は何ですか?

複数のスレッドを起動すると、どのようにしてさまざまなスレッドを区別できますか?このIDは、さまざまなスレッドの情報を検査および処理できるハンドルです。

この方法は可能ですか?

これは可能ですが、この特定の例では、最初に作成したスレッドに対して持っていた1つのアクセスポイントを失います。