關於異步與多線程的區別

比如在在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:
        …


不是在兩個線程裏的。。是在一個線程中。。。

他們的不同在於:一個線程中的函數有可能在沒有執行完的情況下而被中止,轉向執行另一個線程中的代碼。。。

C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
//thread 1
void a()
{
   //執行中有可能被中斷而去執行 thread2 中的 b() 函數
}
//thread 2
void b()
{
}


同一個線程中的函數,其執行順序有可能不同,但是,同一個線程中的函數都會被完全執行以後,纔會執行另一個:

C/C++ code
?
1
2
3
4
5
6
7
8
9
//thread 1:
void a();
void b();
main()
{
   a(); //a函數完全執行以後纔會執行b函數
   b();
}


你所說的這兩個函數,處於同一個線程:
發佈了30 篇原創文章 · 獲贊 67 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章