jrtplib源碼分析 第一篇 jthread的編譯與分析

第一篇 jthread的編譯與分析php

jrtplib代碼依賴庫jthread,所以先從jthread開始jrtplib的學習。首先從如下連接下載jthread的源代碼http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jthreadlinux

jthread當前最新的版本是1.3.1,由於個人開發環境是windows,所以下載zip壓縮包並解壓。windows

jthread的設計目的是可以跨系統使用線程的代碼,jthread的使用代碼做者在使用手冊裏已作了簡單的說明。安全

解壓後看到jthread的代碼結構其實很簡單,主要實現jthread、JMutex、JMutexAutoLock三個類。首先看一下jthread這個類,這個類的實現windows和linux環境使用的是兩套徹底獨立的代碼,編譯的時候咱們根據本身的須要選擇相應的文件便可,代碼中對線程進行了簡單的控制和封裝,線程控制中經過加鎖,使線程建立、關閉更加安全。同時,線程類對外接口統一,從而實現線程類的跨平臺。另外,類中加入線程狀態獲取,線程的線程函數經過虛函數形式傳給子類。函數

JMutex是利用臨界區實現的,就再也不多說。學習

其中JMutexAutoLock是利用JMutex實現的,在JMutexAutoLock構造函數中實現加鎖,析構函數中實現開鎖,從而在JMutexAutoLock對象的生命週期內實現自動加鎖和開鎖。線程

相關文章
相關標籤/搜索