Windows程序設計
整理和Windows應用
內存池基本
摘要: 1、為什么使用內存池?
通常我們習慣直接使用new、malloc等API申請分配內存,這樣做的缺點在于:由于所申請內存塊的大小不定,當頻繁使用時會造成大量的內存碎片并進而降低性能。
閱讀全文
posted @
2011-10-11 08:45 Yu_ 閱讀(429) |
評論 (0) 編輯
線程池的使用(轉)
摘要: 為什么要使用線程池:
創建多線程應用程序是非常困難的。需要會面臨兩個大問題。
一個是要對線程的創建和撤消進行管理,另一個是要對線程對資源的訪問實施同步 。
閱讀全文
posted @
2011-10-10 09:25 Yu_ 閱讀(845) |
評論 (0) 編輯
線程與內核對象的同步
摘要: 若干種內核對象,包括進程,線程和作業。可以將所有這些內核對象用于同步目的。對于線程同步來說,這些內核對象中的每種對象都可以說是處于已通知或未通知的狀態之中。
例如::當進程正在運行的時候,進程內核對象處于未通知狀態,當進程終止運行的時候,它就變為已通知狀態。進程內核對象中是個布爾值,當對象創建時,該值被初始化為FALSE(未通知狀態)。當進程終止運行時,操作系統自動將對應的對象布爾值改為TRUE,表示該對象已經得到通知。當線程終止運行時,操作系統會自動將線程對象的狀態改為已通知狀態。因此,可以將相同的方法用于應用程序,以確定線程是否不再運行。
閱讀全文
posted @
2011-10-08 00:10 Yu_ 閱讀(401) |
評論 (0) 編輯
線程通信與同步
摘要: 線程需要在下面兩種情況下互相進行通信:
? 當有多個線程訪問共享資源而不使資源被破壞時。
? 當一個線程需要將某個任務已經完成的情況通知另外一個或多個線程時。
閱讀全文
posted @
2011-10-07 23:58 Yu_ 閱讀(416) |
評論 (0) 編輯
線程
摘要: 1、線程的組成
(1)、一個是線程的內核對象,操作系統用它管理線程。內核對象還是系統用來存放線程統計信息的地方。
(2)、一個線程堆棧,用于維護線程執行時所需的所有函數參數和局部變量。
閱讀全文
posted @
2011-10-07 23:10 Yu_ 閱讀(257) |
評論 (0) 編輯
進程間通信與同步
摘要: 討論三個問題:
1、進程間如何通信呢,如何來相互傳遞信息呢?
(1)、低級通信:只能傳遞狀態和整數值(控制信息)
–信號量(semaphore)
–信號(signal)
(2)、高級通信:能夠傳送任意數量的數據
–共享內存(shared memory)
–消息傳遞(message passing)
–管道(pipe)
閱讀全文
posted @
2011-10-07 15:44 Yu_ 閱讀(1380) |
評論 (0) 編輯
進程管理
摘要: 1、什么是進程?
::一般將進程定義成一個正在運行的程序的一個實例。進程由兩部分組成:
①、一個內核對象,操作系統用它來管理進程。內核對象也是系統保存進程統計信息的地方。
②、一個地址空間,其中包含所有執行體(executable)或DLL模塊的代碼和數據。此外,它還包含動態內存分配,比如線程堆棧和堆的分配。
閱讀全文
posted @
2011-10-07 11:19 Yu_ 閱讀(412) |
評論 (0) 編輯
內核對象
摘要: 1、什么是內核對象?
內核對象的數據結構只能由內核訪問。
他們有:令牌(access token)對象、事件對象、文件對象、文件映射對象、I/O完成端口對象、作業對象、mailslot對象、mutex對象、pipe對象、進程對象、semaphore對象、線程對象、waitable timer對象以及thread pool worker factory對象等等。大多數成員都是不同的對象類型特有的。
閱讀全文
posted @
2011-10-06 17:27 Yu_ 閱讀(785) |
評論 (0) 編輯