多線程之建立工作者線程和使用介面執行緒區別

來源:互聯網
上載者:User
轉帖+部分原創

    1、工作者線程傾向於瑣碎的處理,與它不同的是,使用介面執行緒具有自己的介面而且實際上類似於運行其他應用程式。建立線程而不是其他應用程式的好處是線程可與應用程式共用程式空間,這樣可以簡化線程與應用程式共用資料的功能。
  2、典型情況是使用介面執行緒用於完成查詢和替換等功能,或者是其他不希望佔用主應用程式大量處理時間但是需要一個介面的功能或服務,或者使用者也可完全不考慮介面,將這種類型的線程用於視窗Message Service器作為一種傳遞其訊息的方式,以避免使自己因佔用處理時間過多而陷入困境。
  3、在時間要求嚴格的應用程式(例如即時應用程式)中,不希望因為工作者線程啟動而等待,這時可將工作者線程中的控制邏輯內建到使用介面執行緒中並提前建立線程。當需要處理事務時,向使用介面執行緒發送訊息,此時使用介面執行緒已經運行並且在等待指令。
  2種線程都可以用AfxBeginThread建立,注意不同的是第一個參數。
  CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );//WORK線程
  CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );//UI線程

下面是2種線程的建立步驟:
工作者線程:
首先建立一個函數UNIT ThreadProc(LPVOID pParam);可以把這個函數看成一個線程,進行需要的操作。
然後在需要調用的時候(比如initialize的時候)調用AfxBeginThread(ThreadProc,//ThreadProc控制函數地址
                                                   &m_Control,//要顯示的地區,控制項對象地址,比如EDITBOX LISTBOX
                                                   0,0,0,NULL)
啟動線程即可

使用者介面進程:
這裡以建立好的對話方塊MFC程式為例,首先使用者介面進程需要從CWinThread類派生一個新的線程類,就叫它CMultipleThread吧,這個類下需要有表單成員CMultipleThreadDlg* m_pDlg用於在表單上顯示,要不然怎麼叫介面進程呢?還需要重載虛函數virtual int Run(),在Run函數裡進行需要的操作。
接著就可以在程式建立該線程
CMultipleThread* pThread = (CMultipleThread*)AfxBeginThread(RUNTIME_CLASS(CMultipleThread),THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL),
pThread->SetOwner(this)//設定視窗指標
pThread->ResumeThread();//恢複線程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.