C語言pthread庫的互斥鎖使用案例

一、函數約定

1、初始化鎖

int? ??pthread_mutex_init(pthread_mutex_t*? ?m, const pthread_mutexattr_t*? ?attr)

?

2、加鎖

int? ? pthread_mutex_lock(pthread_mutex_t*? ?m);

?

3、解鎖

int? ?pthread_mutex_unlock(pthread_mutex_t*? m);
?

4、銷毀

int? ? ?pthread_mutex_destroy(pthread_mutex_t*? m);
?

?

二、代碼如下

#include<pthread.h>
#include<stdio.h>


// 定義結構體變量,代表一個互斥鎖?
pthread_mutex_t mutex;

?

// 線程函數,描述線程的邏輯
void* thread_func(void* arg)
{
?? ?// 加鎖
? ? pthread_mutex_lock(&mutex);?
? ??
? ? int* total = (int*)arg;
? ??
? ? int k;
? ? for(k = 1; k <= 1000; k++){
? ? ?? ?*total = *total + 1;
?? ?}
?? ?
? ? // 執行一些需要互斥訪問的操作
? ? // 轉賬,修改共享數據?
? ??
? ? // update("id", "新值");
? ??
? ? // 解鎖
? ? pthread_mutex_unlock(&mutex);?
? ??
? ? printf("線程%d計算完畢\n", pthread_self());
? ? return NULL;
}


// pthread庫的加鎖和解鎖操作。?
int main()
{

? ?// 共享數據
?? ?int total = 0;
?? ?
?? ?// 初始化互斥鎖
? ? pthread_mutex_init(&mutex, NULL);?
? ??
? ? pthread_t t1;
? ? pthread_t t2;
? ??
? ? // 創建和啟動線程
? ? // 同時建立兩個?
? ? pthread_create(&t1, NULL, thread_func, &total);
? ? pthread_create(&t2, NULL, thread_func, &total);
? ??
? ??
? ? // 等待子線程結束
?? ?pthread_join(t1, NULL);
?? ?pthread_join(t2, NULL);?
?? ?
?? ?printf("計算結果:%d \n", total);
? ??
? ? // 銷毀互斥鎖
? ? pthread_mutex_destroy(&mutex);
? ??
? ? return 0;
}

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76111.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

隨機2級域名引導頁HTML源碼

源碼介紹 隨機2級域名引導頁HTML源碼,每次點進去都隨機一個域名前綴。 修改跳轉域名在 350 行代碼&#xff0c;源碼由HTMLCSSJS組成&#xff0c;記事本打開源碼文件可以進行內容文字之類的修改&#xff0c;雙擊html文件可以本地運行 效果預覽 源碼免費獲取 隨機2級域名引導頁…

NQA 網絡質量分析協議

協議信息 網絡質量分析協議&#xff0c;支持 icmp 等協議測試 配置實現 華為 創建 ICMP 測試實例 NQA 與靜態路由聯動 ?ip route-static 10.1.1.0 24 10.1.2.1 track nqa admin test1??

Nginx — nginx.pid打開失敗及失效的解決方案

1、場景一&#xff1a;nginx.pid文件或者目錄不存在 1.1、報錯詳情 [rootmaster conf]# ../sbin/nginx -s reload nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory) #nginx.pid文件或目錄不存在。 原因&#xff1a; 1、文件…

Gitee批量刪除倉庫

Gitee批量刪除倉庫 文章目錄 Gitee批量刪除倉庫生成一個GiteeToken通過Python調用Gitee API參考文檔 生成一個GiteeToken 右上角下拉->設置->安全設置->私人令牌->生成新令牌&#xff0c;注意將令牌保存&#xff08;只會出現一次&#xff09; 通過Python調用Gite…

AireOS WLC安裝License報錯

1.概述 本文主要記錄在AireOS的WLC上安裝License錯誤的情況。License的類型也是傳統的License&#xff0c;因為設備的型號已經EOL&#xff0c;相關的資料應該較少&#xff0c;這里進行可能問題的記錄。 2.適用場景 型號&#xff1a;WLC2500&#xff0c;WLC5508 License類型…

利用 Excel 函數隨機抽取(附示例)

RANDARRAY 是 Excel 365 和 Excel 2021 引入的一個函數&#xff0c;用于生成一個隨機數數組。它的語法如下&#xff1a; RANDARRAY([rows], [columns], [min], [max], [whole_number])參數詳解 rows&#xff08;可選&#xff09; 要生成的行數&#xff08;默認值為 1&#xff…

Python:爬蟲概念與分類

網絡請求&#xff1a; https://www.baidu.com url——統一資源定位符 請求過程&#xff1a; 客戶端&#xff0c;指web瀏覽器向服務器發送請求 請求&#xff1a;請求網址(request url)&#xff1b;請求方法(request methods)&#xff1b;請求頭(request header)&…

【今日半導體行業分析】2025年3月30日

今日探針卡行業分析&#xff1a;把握機遇&#xff0c;應對挑戰 一、引言 在半導體產業的精密制造流程中&#xff0c;探針卡作為晶圓測試環節的核心設備&#xff0c;猶如一顆精密的 “心臟”&#xff0c;承擔著芯片封裝前電學性能測試與篩選的重任。其性能的優劣直接關系到芯片…

HO與OH差異之Navigation三

在上一篇內容中我們介紹了HO與OH差異之Navigator&#xff0c;我們也了解了Navigator的基本概念和大致了解了一下他的基礎用法&#xff0c;既然談到差異肯定就不止這兩種差異&#xff0c;今天就讓我們來了解第三種差異NavRouter&#xff0c;其中在HO中我們并沒有這種路由方式但是…

Java 程序員面試題:從基礎到高階的深度解析

引言 Java 作為全球最流行的編程語言之一&#xff0c;其面試題不僅考察候選人的編程能力&#xff0c;更關注對底層原理和架構設計的理解。本文將系統梳理 Java 面試中的高頻考點&#xff0c;結合代碼示例與原理分析&#xff0c;助您從容應對技術面試。 一、Java 基礎語法與核…

Python操作Excel文件的11種方法

Python操作Excel文件的11種方法 pandas&#xff1a;功能強大&#xff0c;支持數據清洗、轉換和分析&#xff0c;適用于數據分析和處理任務。 openpyxl&#xff1a;專注于 .xlsx 文件格式&#xff0c;提供細粒度的操作&#xff0c;適用于需要對 Excel 文件進行細粒度操作的場景…

ZGC初步了解

ZGC ZGC和G1&#xff0c;CMS一樣都是一種垃圾回收器。那其實G1已經很不錯了 為什么還需要ZGC呢 ZGC&#xff08;The Z Garbage Collector&#xff09;是JDK 11中推出的一款低延遲垃圾回收器&#xff0c;它的設計目標包括&#xff1a; 停頓時間不超過10ms&#xff1b; 停頓時…

Tof 深度相機原理

深度相機(TOF)的工作原理_tof相機原理-CSDN博客 深度剖析 ToF 技術&#xff1a;原理、優劣、數據糾錯與工業應用全解析_tof技術-CSDN博客 飛行時間技術TOF_tof計算公式-CSDN博客 深度相機&#xff08;二&#xff09;——飛行時間&#xff08;TOF&#xff09;_飛行時間技術-C…

c++-函數增強

一、編譯器對函數名的處理 1. C與C的差異 C編譯器&#xff1a;保留原始函數名&#xff0c;無額外處理。例如&#xff1a; int add(int a, int b) { return a b; } 在匯編代碼中仍為add。 C編譯器&#xff1a;通過name mangling&#xff08;名稱修飾&#xff09;生成唯一函數…

跟著StatQuest學知識08-RNN與LSTM

一、RNN &#xff08;一&#xff09;簡介 整個過程權重和偏置共享。 &#xff08;二&#xff09;梯度爆炸問題 在這個例子中w2大于1&#xff0c;會出現梯度爆炸問題。 當我們循環的次數越來越多的時候&#xff0c;這個巨大的數字會進入某些梯度&#xff0c;步長就會大幅增加&…

HarmonyOS 之 @Require 裝飾器自學指南

在 HarmonyOS 應用開發工作中&#xff0c;我頻繁碰到組件初始化傳參校驗的難題。在復雜的組件嵌套里&#xff0c;要是無法確保必要參數在構造時準確傳入&#xff0c;就極易引發運行時錯誤&#xff0c;而且排查起來費時費力。一次偶然的機會&#xff0c;我接觸到了 Require 裝飾…

CDN節點對網絡安全掃描的影響:挑戰與應對策略

引言 在當今互聯網環境中&#xff0c;內容分發網絡(CDN)已成為提升網站性能和用戶體驗的關鍵技術。然而&#xff0c;CDN的廣泛應用也為網絡安全掃描帶來了新的挑戰。本文將深入探討CDN節點如何影響各類安全掃描工作&#xff0c;分析由此產生的安全風險&#xff0c;并提供有效的…

【Git多分支使用教程】

Git多分支使用教程 Git多分支使用手冊目錄多分支只拉取一個多分支拉取指定幾個步驟 1&#xff1a;克隆第一個分支步驟 2&#xff1a;獲取其他分支 常見問題與解決方法1. 錯誤&#xff1a;origin/分支名 is not a commit2. 分支名稱沖突3. --single-branch 限制 總結 Git多分支使…

【身份安全】OAuth 2.0工作原理(一)

目錄 OAuth 授權框架一、OAuth 角色二、協議流程三、應用注冊&#xff08;Application Registration&#xff09;用戶 ID&#xff08;Client ID&#xff09; 和 用戶密碼&#xff08;Client Secret&#xff09; 四、權限授予1、授權碼鏈接2、用戶授權申請3、應用程序接收授權碼…

大疆上云api直播功能如何實現

概述 流媒體服務器作為直播畫面的中轉站,它接收推流端的相機畫面,同時拉流端找它獲取相機的畫面。整個流程如下: 在流媒體服務器上創建流媒體應用(app),一個流媒體服務器上面可以創建多個流媒體應用約定推拉流的地址。假設流媒體服務器工作在1935端口上面,假設創建的流…