別スレッドのデータを受信できない
VC6 MFCです。
よく調べない無精な質問ですがご容赦ください。
別(受信)スレッド中にあるデータをWindowsメインスレッドで受信できません。
public:
unsigned long data;
HWND hWnd;
受信スレッド:
while(1){
・・・・・・・
::PostMessageA(hWnd, data, 0, 0);
//::SetMessageExtraInfo( data );
・・・・・・・
}
メインスレッド FormView クラス:
hWnd = GetSafeHwnd();
MSG msg;
while(1){
・・・・・・・
::GetMessage( &msg, NULL, 0, 0 );
//data = ::GetMessageExtraInfo();
・・・・・・・
}
これでmsg.messageを観測すると10回に1回データが来ているようです。それとは別のメッセージも含まれ、メッセージキューの格納順序がわからないため『正しい』データの切り出しができません。
**MessageExtraInfo()で付加情報として取得できないかとも考えたのですが、これも失敗しました。
非常に遅くもなります。
::PostMessageA, ::GetMessageの組み合わせ以外を考えた方がいいのかもしれませんが、メインスレッドのIDを取得する方法が分かりません。
Linuxでは両スレッドのIDが簡単に取得でき、msgsnd, msgrcvで目的のdataが得られたのですが、Windowsではそうはいきませんでした。
メッセージ周りに関する基本理解を欠いておりますが、とにかく結果だけだしたくご教示願えれば幸いです。