2010-11-19 9 views
1

CreateExを使用して新しいウィンドウを作成すると、独自のスレッドまたは親(つまりインスタンス化コードが実行されたスレッド)のコードが実行されますか?ありがとう。Windowsとスレッドの作成 - C++

+0

デバッガを見てください – Andrew

+0

これはあなたを助けるかもしれません:http://support.microsoft.com/kb/90975/en-us –

答えて

1

いいえ、作成ウィンドウが実際に自分自身で任意のコードを実行していない新しいスレッドに

+0

ありがとうございました。最初に答えるために受け入れられました。 –

+0

問題なし、ただ質問してください) –

7

ウィンドウを起動してはいけない、すべてのコードは、独自のコードの一部であるメッセージループから呼び出されます。 Windows UIと複数のスレッドで対話しようとすると大きな問題に遭遇する可能性があるので、常に1つのスレッド内のメッセージに応答する必要があります。

+0

+1 "あなたは常に1つのスレッド内のメッセージに応答する必要があります。" –

+0

ありがとうございます。 +1の詳細。 –

2

CreateWindowEx()新しいスレッドは作成されません。新しいスレッドが必要な場合は、 と呼びます(_beginthreadex()(通常は優先)またはCreateThread())。

あなたが不思議に思っている場合は、前者がCRTの部分を初期化するため、CreateThread()よりも_beginthreadex()が優先されます。

3

Windowsはスレッドアフィニティを持っています - この件に関しては、Raymond Chenのarticleを参照してください。

0

GUIのクロススレッドは、通常、災害で終了します。 Windowsライブラリは、例外をスローすることによって積極的にそれを阻止します。

たとえ許可されていても、CreateWindowExはコード(ロック、スレッドの安全性など)について非常に大きな前提を設定するため、デフォルトでこれを実行できませんでした。ほとんどのWindows開発はおそらく本質的にシングルスレッドです。

関連する問題