A. 在VC++ 的 MFC中 函數經過多線程編程後不能運行
把這個全局函數的功能全寫回到你的成員函數里讓信,
然後你胡滑螞調用線程時將當前的this指針傳進去,
再在這個全局函數調用你的成員函數(通過傳入的this指針調用褲埋,記得將參數強制轉換回你原來的類型)
B. 多線程原理是什麼
進程與線程是操作系統中的基本概念。進程代表應用程序的執行實例,擁有獨立的虛擬地址空間,包括代碼、數據和資源。進程終止時,其資源也會被銷毀。線程是進程內部的執行單元,它以函數形式運行,例如main或WinMain函數。線程終止,進程也隨之結束。每個進程至少有一個主執行線程,由系統自動創建。用戶可創建其他線程,這些線程在同一個進程中並發執行。每個線程擁有獨立的堆棧和CPU寄存器副本,但共享進程中的其他資源如文件、靜態數據和堆內存。
線程間的通信簡便,多線程技術廣泛應用。但使用公共資源的線程需要同步。Win32提供了同步資源的方式,如信號、臨界區、事件和互斥體。每個進程有獨立的虛擬地址空間,所有線程共享同一地址空間。線程被分配時間片,由操作系統調度。通過時間片輪轉,看起來多個線程同時運行。在多處理器系統上,多個線程可真正同時運行。
Windows平台下,Win32應用程序可在多個進程中運行,每個進程可由多個線程實現。當應用程序有多個任務同時運行時,創建多個線程是有用的。例如,列印時可創建一個負責列印的線程。這種機制使得列印和其他功能同時運行,充分利用CPU空閑時間,避免用戶等待。這稱為多任務,即在進行列印任務的同時可以執行其他任務。需要注意的是,大多數計算機單處理器,操作系統為每個線程分配時間片,產生線程同時運行的假象。活躍線程爭奪控制權會消耗大量CPU資源,降低系統性能。
Win32 SDK提供多線程編程支持,包括同步、互斥和臨界區等操作。Visual C++ 6.0中,MFC類庫也支持多線程編程。線程分為工作者線程和用戶界面線程。工作者線程常處理後台任務,不會耽擱用戶使用應用程序。用戶界面線程處理用戶輸入和事件,具有單獨的消息隊列和窗口界面。Windows95為搶先式多任務系統,即使一個線程因等待事件阻塞,其他線程仍可繼續運行。