1. 程式人生 > >pthread學習筆記(二)--pthread常用API及簡單介紹

pthread學習筆記(二)--pthread常用API及簡單介紹

經過了上篇文件的初步學習,對pthread有了一個簡單的感性認識,但是對pthread的認識還是比較少,在這篇文件當中將要主要學習pthread的一些常用的API。

首先是pthread的執行緒建立API: pthread_create

當建立函式執行成功的時候返回0,並把建立的執行緒tid寫入傳入的執行緒指標中去(第一個引數),否則返回一個非零值並設定errno。

其中,第一個和第三個引數是必須要設定的,其他兩個引數可以根據情況設定,當沒有需求的時候傳入NULL即可。

pthread_exit: 終止當前執行緒

pthread_join:掛起當前執行緒直到指定的執行緒終止為止(這個函式對於pthread十分重要,正如上一篇文件中所說的,不呼叫該函式可能會造成後續的create失敗的問題)。

pthread_cancel: 撤銷一個執行緒

執行緒屬性:(上文中create函式的第二個引數,型別為pthread_attr_t,可以使用pthread_attr_XXXX函式族呼叫)

detachstate:分離或者切入狀態,有兩個值PTHREAD_CREATE_JOINABLE(default value),PHTREAD_CREATE_DETACHED

schedpolicy:  排程策略,取值有: SCHED_OTHER, SCHED_FIFO

schedparam:  排程策略相關

inheritsched: PTHREAD_EXPLICIT_SCHED(default value), PTHREAD_INERIT_SCHED

scope: 時間片,取值有:PTHREAD_SCOPE_SYSTEM(default value每個執行緒 一個系統時間片), PTHREAD_SCOPE_PROGCESS(執行緒共享系統時間片)。

pthread cleanup巨集

pthread cleanup巨集主要用來處理執行緒的推出狀態,pthread_exit和pthread_join等可以作為它的引數

互斥mutex

由於執行緒是併發執行的,因此有時候需要對一些資料進行保護,例如多執行緒標準輸出如果不加以處理,那麼輸出基本上都會是亂碼,此時就可以使用mutex對輸出流進行控制,一個執行緒執行寫入操作的時候,加一把互斥鎖,以防別的執行緒同時寫入。

互斥物件在pthread中的定義為pthread_mutex_t,以下是它的一些API函式:

條件變數

執行緒使用條件變數物件來阻塞自己以等待某個特定條件的發生。

條件物件的定義為pthread_cond_t

至此,基本的pthread的API函式就學習到這裡了,在後續的學習當中,將會結合例子更深入的學習。

相關推薦

pthread學習筆記--pthread常用API簡單介紹

經過了上篇文件的初步學習,對pthread有了一個簡單的感性認識,但是對pthread的認識還是比較少,在這篇文件當中將要主要學習pthread的一些常用的API。 首先是pthread的執行緒建立API: pthread_create #include<pthrea

Docker學習筆記--docker部署配置常用指令介紹

Docker部署安裝 ubuntu:apt-get install docker centos:yum install docker 設定開機啟動Docker Daemon程序 systemctl start docker.service syst

Docker學習筆記---docker鏡像基於container制作

系統基礎 方式 目錄 info run contain tar 互聯 指定 Docker鏡像詳解前面講到docker包括image,container.....等組件docker image包含啟動容器所需的文件系統及內容,所以它才能用於創建並啟動docker容器docke

struts2學習筆記—— 獲取登入資訊計算線上人數

package com.lewa.action; import java.util.Map; import org.apache.struts2.dispatcher.SessionMap; import org.apache.struts2.interceptor.ApplicationAware; i

Django學習筆記----簽到設計邏輯資料庫基本操作API

1.釋出會簽到系統設計原理 簽到系統設計原理: 簽到功能頁面屬於某一場獨立釋出會。在釋出列表中,每一條釋出會都含有一個“簽到”連結,用來開啟對應簽到頁面。 簽到連結根據釋出會id來確認:/sig

VOLTE學習筆記——IMS相關標識SIP知識

一、IMS相關標識 1、私有使用者標識IMPI: IP Multimedia Private Identity  簡要的說:用於使用者接入IMS網路的註冊,鑑權,認證和計費,私有使用者標識不用於呼叫的定址和路由;私有使用者標識採用網路接入識別符號(NAI)的形式,即[ema

Flask 學習筆記:RESTful API

rul pos paypal request 類的方法 裝飾器 怎樣 out 語言 概括 URL:需要操作的對象,也就是資源 HTTP method:我要對該對象做什麽(POST 增、DELETE 刪、GET 查、PUT 和 PATCH 改) HTTP status co

Spark (Python版) 零基礎學習筆記—— Spark Transformations總結舉例

1. map(func) 將func函式作用到資料集的每個元素,生成一個新的分散式的資料集並返回 >>> a = sc.parallelize(('a', 'b', 'c')) >>> a.map(lambda x:

ROS2學習筆記——ros2內部命令列工具介紹與使用

一、簡介        ROS2與ROS的基本概念還是差不多的,都有節點(Node)、話題(Topic)、訊息(Message)和服務(Service)之類的東西,具體這些概念請參見部落格ROS機器人系統學習筆記(三)--------認識節點(Node)和話題(Topic)

C#可擴展編程之MEF學習筆記:MEF簡介簡單的Demo

com ring this exec hosting code .cn 引用 展開 在文章開始之前,首先簡單介紹一下什麽是MEF,MEF,全稱Managed Extensibility Framework(托管可擴展框架)。單從名字我們不難發現:MEF是專門致力於解決擴展性

NumPy學習指南 學習筆記 常用函式

1.  檔案讀寫 通常情況下,資料是以檔案形式儲存的。學會讀寫檔案是深入學習Numpy的基礎。 1.1 建立單位矩陣,並存入txt檔案i2 = np.eye(2) i2 Out[84]: array([[ 1., 0.], [ 0., 1.]]) 使用s

docker學習筆記——映象的常用操作

上一篇文章介紹了docker在centos中的安裝過程及核心概念講解,這一篇我們主要講解映象的常用操作。 1. 獲取映象 命令: docker pull <域名>/<namespace>/<repo>:<tag&g

黑馬程式設計師-IOS學習筆記常用關鍵字和方法

------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流!------- 常用關鍵字和方法: 一.記憶體管理情況 1- autorelease,當用戶的程式碼在持續執行時,自動釋放池是不會被銷燬的,這段時間內使用者可以安全地使用自動釋放的物件。當

php laravel框架學習筆記 數據庫操作

true 數據 mar sql show top 一行 ati del 原博客鏈接:http://www.cnblogs.com/bitch1319453/p/6810492.html mysql基本配置 你可用通過配置環境變量,使用cmd進入mysql,當然還有一種東

java學習筆記圖形用戶接口

star strong per getwidth cep runnable graphics s2d gb2 這個學期主要放在ACM比賽上去了,比賽結束了。不知不覺就15周了,這周就要java考試了,復習一下java吧。java的學習的目的還是讓我們學以致用,讓我們可以

數據結構學習筆記 線性表的順序存儲和鏈式存儲

出錯 初始化 node != test span 輸入 des val 線性表:由同類型數據元素構成有序序列的線性結構  --》表中元素的個數稱為線性表的長度  --》沒有元素時,成為空表  --》表起始位置稱表頭,表結束位置稱表尾 順序存儲:    1 package

Memcache 學習筆記---- PHP 腳本操作 Memcache 服務器

ext status ram var_dump 介紹 修改 memcache local dbn    PHP 腳本操作 Memcache 服務器 一、PHP腳本操作Memcache方法     使用 PHP 腳本操作 Memcache,在 PHP 手冊中有詳細的介紹,我們

javascript學習筆記:定義函數、調用函數、參數、返回值、局部和全局變量

兩個 cnblogs bsp 結果 value ava ase com 調用 定義函數、調用函數、參數、返回值 關鍵字function定義函數,格式如下: function 函數名(){ 函數體 } 調用函數、參數、返回值的規則和c語言規則類似。 1 <!DOC

神箭手爬蟲學習筆記

暫存 自動 表達 eve doc 常用 學習 數據 .sh 一,可以使用神劍手已經做好的爬蟲市場直接跑,不需要自己定義爬取規則 二,爬蟲市場裏沒有的網站,需要自己去定義規則來爬數據。 三,爬取的數據可以先存放在神劍手,也可以放到七牛暫存。(提醒下,網站需要數據備份如果數量不

thinkphp5.0學習筆記API後臺處理與命名空間

mac code 輸入 -1 pub 基礎 select() color 第一個 命名空間 先來看命名空間吧; 命名空間是學習TP的基礎, <?php namespace app\lian\c1; class yi{ public $obj = "這是第一個