比如在在Fn函數中調用PostMessage,而在MainWndProc函數中處理消息:
void Fn()
{
......
PostMessage(參數);
FncPrint();
......
}
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
......
switch (message)
{
case WM_PAINT:
....
case WM_DESTROY: // 正在銷燬窗口
......
case xxx:
…
不是在兩個線程裏的。。是在一個線程中。。。
他們的不同在於:一個線程中的函數有可能在沒有執行完的情況下而被中止,轉向執行另一個線程中的代碼。。。
1
2
3
4
5
6
7
8
9
10
11
|
//thread 1 void
a() { //執行中有可能被中斷而去執行 thread2 中的 b() 函數 } //thread 2 void
b() { } |
同一個線程中的函數,其執行順序有可能不同,但是,同一個線程中的函數都會被完全執行以後,纔會執行另一個:
1
2
3
4
5
6
7
8
9
|
//thread 1: void
a(); void
b(); main() { a();
//a函數完全執行以後纔會執行b函數 b(); } |
你所說的這兩個函數,處於同一個線程: