シグナル状態というタイトルでいいのでしょうか.マルチスレッド作成のために_beginthreadexを呼んで,そのあとすぐにPostthreadMessageを実行してもキューにメッセージを投げてもそのスレッドに届きません.まだスレッドの作成ができてないからだと思いますがそのスレッドの作成完了まで待つ待機関数というものはないのでしょうか?独自でなんらか実装するのならどのような方法がありますか?
スレッドは _beginthreadex を呼び出した直後に作成されています。その直後に PostThreadMessage でキューにメッセージを投げても届かないのは該当のスレッドでメッセージキューが作成されていないためです。該当のスレッドでメッセージキューを作成するには、そのスレッド自身がメッセージキューを操作する PeekMessage や GetMessage 等の関数を呼び出す必要があります。PostThreadMessage 等でそのスレッドが自分自身にメッセージをポストしても作成されます。
その辺の話は以下のサイトにちょろっとだけ記載してあります。
https://docs.microsoft.com/ja-jp/windows/desktop/winmsg/about-messages-and-message-queues
で、どのように待ち合わせるかですが WaitForSingleObject 等の待機関数では待ち合わせることはできないため、以下のように成功するまで PostThreadMessage を呼び出し続けるなんて手法が使われたりします。
C++
1HANDLE ht;
2unsigned idt;
3ht = (HANDLE)_beginthreadex(NULL, 0, ThreadProc, NULL, 0, &idt);
4DWORD dwExCode;
5while (GetExitCodeThread(ht, &dwExCode) && dwExCode == STILL_ACTIVE && !PostThreadMessage(idt, WM_NULL, 0, 0)) {
6 Sleep(1);
7}
上記以外ですと起動されたスレッド側から起動したスレッド側に Post(Thread)Message 等で通知することが多いですかね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。