← |
2024年11月 |
→ |
日 |
月 |
火 |
水 |
木 |
金 |
土 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
26 |
27 |
28 |
29 |
30 |
|
UIスレッドで手動リセットEventの作成。
A/Bのそれぞれのスレッドで
HANDLE endEvents[] = { m_hEventAbort, : }; DWORD dwEventCount = ::WaitForMultipleObjects(sizeof(endEvents), endEvents, FALSE, INFINITE); if (dwEventCount - WAIT_OBJECT_0 == 0) { //スレッドの終了 }
的なコードを書いて、UIスレッドで ::SetEvent(m_hEventAbort); とやると、各スレッドが安全に終了する予定なのだが・・・
スレッドA:停止する スレッドB:スレッドAが停止した瞬間にm_hEventAbortのハンドルが無効になったとのエラー。
CEventを使っていたから、API直叩きに変えてみるも症状は変らず。
・・・という現象に悩まされる。何ぞ・・・・┐('A`)┌ そんなところで、明日があるので今日は寝る。
翌日追記: 原因判明!!!
DWORD dwEventCount = ::WaitForMultipleObjects(sizeof(endEvents), endEvents, FALSE, INFINITE); うわっ恥ずかしい(/ω\)
正しくはこう:
DWORD dwEventCount = ::WaitForMultipleObjects(sizeof(endEvents) / sizeof(endEvents[0]), endEvents, FALSE, INFINITE);
・・・少し、頭冷やそうか・・・ |
01:20, Monday, Feb 14, 2011 ¦ 固定リンク
¦ 携帯
■コメント
■コメントを書く
※コメントの受け付けは終了しました
|
|