1. 程式人生 > >手把手寫 Linux 執行緒池

手把手寫 Linux 執行緒池

在 Linux 系統中,每建立一個執行緒系統預設會分配 8M 的執行緒棧。如果在實際使用中每處理一個任務就建立一個執行緒,處理完後又取消執行緒。伺服器在建立和銷燬執行緒上花費的時間和消耗的系統資源都相當大,甚至可能要比在處理實際的使用者請求的時間和資源要多的多。執行緒池主要用來解決執行緒生命週期開銷問題和資源不足問題。通過對多個任務重複使用執行緒,執行緒建立的開銷就被分攤到了多個任務上了,應用程式響應會更快。

本場 Chat 首先會介紹 C 語言相關的一些應用技巧,然後針對執行緒間的同步互斥、條件變數等做詳細的描述,然後深入淺出的闡述執行緒池的原理及其構造方法。

執行緒池將實現以下功能:

  1. 一個程序中的執行緒就好比是一家公司裡的員工,員工的數目應該根據公司的業務多少來定,太少了忙不過來,但是太多了也浪費資源。
  2. 最理想的情況是讓程序有一些初始數目的執行緒,當沒有任務的時候這些執行緒自動進入睡眠,有了任務他們會立即執行任務,不斷迴圈。
  3. 單任務超時設定。
  4. 程序還應該可以根據自身任務的繁重與否來增刪執行緒的數目。
  5. 當所有的任務都完成了之後,所有的執行緒還能妥當地收官走人。
  6. 多個執行緒池(部門)能協同工作。
  7. 使用者可進行批任務投遞。

本場 Chat 您將學到如下內容:

  1. 可擴充套件化模組程式設計技巧。
  2. 多執行緒程式設計、控制、同步互斥的常見使用方法。
  3. 執行緒池的工作原理是什麼。
  4. 如何構思執行緒池的框架。
  5. 從零編寫通用執行緒池。

閱讀全文: http://gitbook.cn/gitchat/activity/5c31e790a4078563ee857425

一場場看太麻煩?成為 GitChat 會員,暢享 1000+ 場 Chat !點選檢視