线程 sleep 取消_C/C++ 多线程机制
一、C/C++多線程操作說明
C/C++多線程基本操作如下:
1. 線程的建立結(jié)束
2. 線程的互斥和同步
3. 使用信號量控制線程
4. 線程的基本屬性配置
在C/C++代碼編寫時,使用多線程機(jī)制,首先需要做的事情就是聲明引用,具體如下:
#include二、線程基本操作方法
基本線程操作:
1. pthread_create():創(chuàng)建線程開始運(yùn)行相關(guān)線程函數(shù),運(yùn)行結(jié)束則線程退出
2. pthread_eixt():因為exit()是用來結(jié)束進(jìn)程的,所以則需要使用特定結(jié)束線程的函數(shù)
3. pthread_join():掛起當(dāng)前線程,用于阻塞式地等待線程結(jié)束,如果線程已結(jié)束則立即返回,0=成功
4. pthread_cancel():發(fā)送終止信號給thread線程,成功返回0,但是成功并不意味著thread會終止
5. pthread_testcancel():在不包含取消點,但是又需要取消點的地方創(chuàng)建一個取消點,以便在一個沒有包含取消點的執(zhí)行代碼線程中響應(yīng)取消請求.
6. pthread_setcancelstate():設(shè)置本線程對cancle線程的反應(yīng)
7. pthread_setcanceltype():設(shè)置取消狀態(tài) 繼續(xù)運(yùn)行至下一個取消點再退出或者是立即執(zhí)行取消動作
8. pthread_setcancel():設(shè)置取消狀態(tài)
三、線程互斥與同步機(jī)制
基本的互斥與同步的操作方法:
1. pthread_mutex_init():互斥鎖的初始化
2. pthread_mutex_lock():鎖定互斥鎖,如果嘗試鎖定已經(jīng)被上鎖的互斥鎖則阻塞至可用為止
3. pthread_mutex_trylock():非阻塞的鎖定互斥鎖
4. pthread_mutex_unlock():釋放互斥鎖
5. pthread_mutex_destory():互斥鎖銷毀函數(shù)
(更多免費 C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK等等多個知識點干貨學(xué)習(xí)資料加群 960994558)四、多線程實踐
1. 基本的線程及建立運(yùn)行
下面的代碼是C/C++開發(fā)的基本的線程的運(yùn)行,使用的就是最基本的pthread.h:
/* thread.c */例程中循環(huán)3次建立3條線程,并且使用pthread_join函數(shù)依次等待線程結(jié)束;
線程中使用rand()獲取隨機(jī)值隨機(jī)休眠5次,隨意會出現(xiàn)后執(zhí)行的線程先執(zhí)行完成;
運(yùn)行結(jié)果:
$可以看到,線程1先于線程0執(zhí)行,但是pthread_join的調(diào)用時間順序,先等待線程0執(zhí)行;
由于線程1已經(jīng)早結(jié)束,所以線程0被pthread_join等到的時候,線程1已結(jié)束,就在等待到線程1時,直接返回;
2. 線程執(zhí)行的互斥和同步pthread_mutex_lock
下面我們在上面的程序中增加互斥鎖:
/*thread_mutex.c*/在上面的例程中直接添加同步鎖pthread_mutex_t;
在線程中加入,程序在執(zhí)行線程程序時,調(diào)用pthread_mutex_lock上鎖,發(fā)現(xiàn)上鎖時候后進(jìn)入等待,等待鎖再次釋放后重新上鎖;
所以線程程序加載到隊列中等待,等待成功上鎖后繼續(xù)執(zhí)行程序代碼;
運(yùn)行結(jié)果如下:
Create以上可能存在有不足的地方歡迎指出討論,覺得不錯的朋友希望能得到您的轉(zhuǎn)發(fā)支持,同時可以持續(xù)關(guān)注我。
(更多免費 C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK等等多個知識點干貨學(xué)習(xí)資料加群 960994558)
總結(jié)
以上是生活随笔為你收集整理的线程 sleep 取消_C/C++ 多线程机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows css,CSS (Win
- 下一篇: 计算机教室应用计划,计算机教室新学期工作