Pthreads執行緒庫

2021-08-11 03:35:04 字數 1818 閱讀 3730

posix執行緒是執行緒的posix標準,定義了建立和操縱執行緒的一套api。

實現posix 執行緒標準的庫常被稱作pthreads,一般用於unix-like posix 系統,如linux、 solaris。但是microsoft windows上的實現也存在,例如直接使用windows api實現的第三方庫pthreads-w32;而利用windows的sfu/sua子系統,則可以使用微軟提供的一部分原生posix api。

pthreads定義了一套c語言的型別、函式與常量,它以pthread.h標頭檔案和乙個執行緒庫實現。

pthreads api中大致共有100個函式呼叫,全都以」pthread_」開頭,並可以分為四類:

執行緒管理,例如建立執行緒,等待(join)執行緒,查詢執行緒狀態等。

mutex:建立、摧毀、鎖定、解鎖、設定屬性等操作

條件變數(condition variable):建立、摧毀、等待、通知、設定與查詢屬性等操作

使用了讀寫鎖的執行緒間的同步管理

posix的semaphoreapi可以和pthreads協同工作,但這並不是pthreads的標準。因而這部分api是以」sem_」打頭,而非」pthread_」。

執行緒操縱函式(簡介起見,省略引數):

pthread_create():建立乙個執行緒

pthread_exit():終止當前執行緒

pthread_cancel():請求中斷另外乙個執行緒的執行。

pthread_join():阻塞當前的執行緒,直到另外乙個執行緒執行結束

pthread_kill():向指定id的執行緒傳送乙個訊號,如果執行緒不處理該訊號,則按照訊號預設的行為作用於整個程序。

pthread_cleanup_push():執行緒可以安排異常退出時需要呼叫的函式,這樣的函式稱為執行緒清理程式,執行緒可以建立多個清理程式。

pthread_cleanup_pop():以非0引數呼叫時,引起當前被彈出的執行緒清理程式執行。

pthread_setcancelstate():允許或禁止取消另外乙個執行緒的執行。

pthread_setcanceltype():設定執行緒的取消型別為延遲取消或非同步取消。

執行緒屬性函式:

pthread_attr_init():初始化執行緒屬性變數。執行後,pthread_attr_t結構所包含的內容是作業系統支援的執行緒的所有屬性的預設值。

pthread_attr_setdetachstate():設定執行緒屬性變數的detachstate屬性(決定執行緒在終止時是否可以被joinable)

pthread_attr_getdetachstate():獲取脫離狀態的屬性

pthread_attr_setscope():設定執行緒屬性變數的__scope屬性

pthread_attr_setschedparam():設定執行緒屬性變數的schedparam屬性,即呼叫的優先順序。

pthread_attr_getschedparam():獲取執行緒屬性變數的schedparam屬性,即呼叫的優先順序。

pthread_attr_destroy():刪除執行緒的屬性,用無效值覆蓋

mutex函式:

pthread_mutex_init()初始化互斥鎖

pthread_mutex_destroy()刪除互斥鎖

pthread_mutex_lock():占有互斥鎖(阻塞操作)

pthread_mutex_trylock():試圖占有互斥鎖(不阻塞操作)。即,當互斥鎖空閒時,將占有該鎖;否則,立即返回。

pthread_mutex_unlock(): 釋放互斥鎖

pthread_mutexattr_(): 互斥鎖屬性相關的函式

fr:海濤高軟(hunk xu)

pthreads多執行緒資料採集

以前使用curl的多執行緒並不是真正的多執行緒,只是一種模擬的多執行緒,現在使用pthreads來實現真正意義上的多執行緒。windows下 mac unix linux下 安裝方式 windows下 解壓得到pthreadvc2.dll和php pthreads.dll檔案,把vc2檔案放到php...

學習pthreads,管理執行緒的棧

程序的位址空間分成 段,靜態資料段,堆和棧段。執行緒棧的位置和大小是從它所屬的程序的棧中切分出來的。每個棧必須足夠大,以容納所有對等執行緒的函式的執行以及它們將會呼叫的例程鏈。或許你會問為什麼要進行執行緒棧的管理?因為棧的管理由系統自動管理。但是針對具體問題,有可能系統自動管理的棧不能滿足執行的要求...

PHP多執行緒擴充套件pthreads例項

class vote extends thread public function run 收到任務引數 需要秒處理資料.n this res rand 100,999 sleep nt this lurl this param this param else 等待任務.n sleep 1 這裡建立...