誰能幫我寫乙個MFC多執行緒的實際例子,謝謝

發布 科技 2024-03-20
9個回答
  1. 匿名使用者2024-02-07

    我更喜歡使用多執行緒,最簡單的方法就是要有效率,比如我們在乙個程式中只使用乙個主線程,而且我們一次只做一件事; 而如果我們開啟多條執行緒,我們可以同時做多件事而不會相互干擾,我們每個人都可以做自己的工作。

    多執行緒就像乙個多工作業系統,我們可以同時聽**和上網,而單執行緒就像單任務,我們需要聽**然後上網,所以需要更長的時間。

    比如你的程式需要不斷更新某條資料,那麼你可以為它開乙個執行緒,讓它無限迴圈,每隔一段時間在後台進行更新,而主線程還在不停地和使用者互動,有個執行緒是不是很方便?

    這就是我的理解。

    還有乙個地方是執行緒比較通用的,比如在我們的程式中,有乙個比較耗時的功能,比如讀取乙個龐大的資料庫中的資訊,計算資料,比較費時,那麼我們就要為它開乙個執行緒,讓它在後台工作,當主線程在和使用者做其他事情的時候, 這個執行緒會悄悄地處理來自後台的資料,這樣使用者就不必等待,也不會覺得你的程式執行緩慢;通常超過 5 秒的等待時間會為其開啟乙個執行緒。

    這就是它的全部內容

  2. 匿名使用者2024-02-06

    這應該是乙個網路程式...

    確實可以使用沒有多執行緒的非同步網路通訊模式,這樣在等待接收資料時不會阻塞土地,也省去了執行緒同步的麻煩。 只是你提到的這個例子是用多執行緒來寫乙個字段,**在程式中阻塞接收訊息,乙個執行緒處理乙個固定人的訊息,結構簡單。

    對於宋振通的單核計算機來說,每個時間點只有乙個執行緒在執行,CPU不斷切換執行緒,讓每個執行緒都有機會執行。

    現在電腦多核很普遍,多執行緒可以充分發揮CPU的效率,多個CPU核可以同時執行多個執行緒,速度更快。

  3. 匿名使用者2024-02-05

    使用以下引數和返回值編寫執行緒函式。

    uint threadtest(lpvoid pparam);

    然後使用以下功能直接在按鈕中啟動執行緒。

    afxbeginthread(threadtest,null);

  4. 匿名使用者2024-02-04

    在將處理資料的地方,使用 afxbeginthread 建立乙個執行緒,它只是乙個 MFC 封閉的全域性函式,您可以查詢它並注意過程函式必須是靜態的或全域性的。 然後,通過 afxbeginthread 的引數將資料傳遞給 procedure 函式進行處理。 至於計算結果。

    建議您使用向主視窗傳送訊息通知的方法。

  5. 匿名使用者2024-02-03

    MFC 執行緒建立函式:afxbeginthreadwin32 執行緒建立函式:createThreadcrt 執行緒建立函式:

    BeginThread Beginthreadex 可以以所有三種方式使用。

  6. 匿名使用者2024-02-02

    在 Windows 下成為伺服器的最佳解決方案是 iocp(i o complete port),中文名稱 i o complete port。

    效能非常好。 說到Windows高階程式設計,難度指數比較高。

    你覺得這個解決方案是不可行的:

    1.大量的CPU時間將被浪費。 如果計算機只有 2 個 CPU,但有 200 個執行緒處於開啟狀態,則計算機的 CPU 數量有限。

    此時,最多有 2 個執行緒同時執行(因為你只有 2 個 CPU),但執行緒的不斷切換讓你感覺好像所有 200 個執行緒都在執行,但速度很慢。 (此時執行緒切換會消耗大量的CPU時間,收益大於損失)。

    2.浪費記憶體。 執行緒需要用 Windows 中的資料來表示,200 個執行緒,開銷有點浪費(雖然現在記憶體很大,但我們不能浪費它)。

    3.執行緒同步問題會讓你頭暈目眩,200個執行緒併發處理很麻煩,要做到執行緒同步,以及執行緒通訊,同步通訊是多執行緒必須考慮的事情。

    4.iocp ---有乙個非常好的解決方案

    網上有很多關於IOCP研究的資料,這裡就不多說了。

    enjoy coding

  7. 匿名使用者2024-02-01

    問題描述不明確,二樓好,知識長。

  8. 匿名使用者2024-01-31

    使用 suspendthread() 和 resumethread() 函式,您可以掛起和喚醒乙個執行緒,該執行緒可以由另乙個執行緒呼叫,也可以由它自己呼叫。

    sleep 也稱為樓上的 sleep() 函式或 sleepex 函式,它只是暫時暫停執行緒以與使用者互動的指定事件時間段。 當然,休眠也是暫停的,這個暫停時間是無限期的,需要 resumethread()。

    歸根結底,冬眠和睡眠被暫停,這只是乙個不確定的時間以及是否需要醒來的問題。 睡眠需要被線喚醒,到了睡覺的時間,你自己醒來,這就是區別!

  9. 匿名使用者2024-01-30

    首先,我想強調一點:你這裡有主線程和新執行緒,它們都存在於你的程式程序中,這個問題不涉及主程序、子程序什麼的,不能混淆程序和線世界的概念。

    即使新執行緒沒有使用睡眠功能,UIS 仍然無法響應新執行緒中更新 UI 的操作。 Windows執行緒可以分為UI執行緒和工作執行緒,主線程是UI執行緒,負責所有響應使用者輸入和繪圖視窗介面的人機互動工作,新建立的執行緒是工作執行緒,只負責計算,不處理人機互動。 所以什麼時候響應介面的更新是由你的主線程決定的,如果主線程還在執行乙個函式,沒有返回訊息迴圈,它就無法更新介面,而當函式執行時,介面就可以更新了。

    防止執行緒中斷是乙個執行緒同步問題,與此處的問題無關。 Windows 提供了一系列執行緒同步 API,您可以使用使用者級執行緒同步 API,例如使用事件、訊號量、互斥鎖等的自旋鎖、關鍵區域、纖細讀寫鎖、條件變數或核心同步物件。 具體原理和使用方法無法用幾句話講清楚,可以閱讀作業系統教學純材料和“Windows 核心程式設計”中關於多執行緒的章節。

相關回答
4個回答2024-03-20

你還罵人謝謝你是小學生嗎?。。所有大學生。 -

6個回答2024-03-20

美玲三章。 1)今天的斬首意味著什麼?創業是困難的,有很多戰鬥。 >>>More

13個回答2024-03-20

以後我會更加努力, 應聘者: 時間: 網上有很多 當我知道開頭的專欄《90年後入黨申請書怎麼寫?“就是這樣。

7個回答2024-03-20

您可以欣賞到山的風采:有的優雅艷麗,有的雄偉挺拔。 >>>More

5個回答2024-03-20

遊戲裝備總價:1948元。

中央處理器]AMD Athlon II X2 245 405元。 >>>More