Linux 读写锁

读写锁是一把锁

/*读写锁的类型 pthread_rwlock_tpthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);int pthread_rwlock_destory(pthread_rwlock_t *rwlock);int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);
*/#include<stdio.h>
#include<unistd.h>
#include<pthread.h>
#include<string.h>int num = 1;
pthread_rwlock_t rwlock;
void* writeNum(void * arg) {while(1) {pthread_rwlock_wrlock(&rwlock);num++;printf("++write, tid: %ld, num:%d\n", pthread_self(), num);pthread_rwlock_unlock(&rwlock);usleep(500);   }
}
void* readNum(void * arg) {while(1) {pthread_rwlock_rdlock(&rwlock);printf("==read, tid: %ld, num:%d\n", pthread_self(), num);pthread_rwlock_unlock(&rwlock);usleep(500);   }
}int main() {pthread_rwlock_init(&rwlock, NULL);pthread_t wtid[3];pthread_t rtid[5];for(int i = 0; i < 3; i++) {pthread_create(&wtid[i], NULL, writeNum, NULL);}for(int i = 0; i < 5; i++) {pthread_create(&rtid[i], NULL, readNum, NULL);}for(int i = 0; i < 3; i++) {pthread_detach(wtid[i]);}for(int i = 0; i < 5; i++) {pthread_detach(rtid[i]);}pthread_exit(NULL);pthread_rwlock_destroy(&rwlock);return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218&#xff0c;但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923、2块16T西数数企业级硬盘、1块2T intel企业级 SSD 1.什么是冷备份 冷备是离线备份&#xff0c;备份好的数据可以单独存取&#xff0c;定期冷备可以保证数据安全&#xff0c;适合…

设计模式篇---桥接模式

文章目录 概念结构实例总结 概念 桥接模式&#xff1a;将抽象部分与它的实现部分解耦&#xff0c;使得两者都能够独立变化。 毛笔和蜡笔都属于画笔&#xff0c;假设需要有大、中、小三种型号的画笔&#xff0c;绘画出12种颜色&#xff0c;蜡笔需要3*1236支&#xff0c;毛笔需要…

Unity当中的灯光类型

文章目录 前言一、Directional平行光二、Point点灯三、Spot 聚光灯四、Area面光灯&#xff0c;只用于烘培 前言 Unity当中的灯光类型 一、Directional平行光 Unity当中最重要的灯管类型&#xff0c;类似现实中的太阳光 二、Point点灯 类似现实中的灯泡&#xff0c;萤火虫&a…

Python爬虫:Session、Cookie、JWT

当你在Python中进行网络爬虫时&#xff0c;需要处理会话&#xff08;Session&#xff09;、Cookie和JWT&#xff08;JSON Web Token&#xff09;时&#xff0c;以下是更详细的介绍和示例&#xff1a; Session&#xff08;会话&#xff09;&#xff1a; 会话用于维护用户的状态…

java版网页代码生成器系统myeclipse定制开发mysql数据库网页模式java编程jdbc生成无框架java web网页

一、源码特点 java版网页代码生成器系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&#xff0c;使…

力扣:105. 从前序与中序遍历序列构造二叉树(Python3)

题目&#xff1a; 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&am…

前端版本更新提示

前端版本更新提示 前言&#xff1a;最近项目发布比较频繁、导致每次都要主动告知用户/测试 去刷新清除页面缓存、从而防止发了新功能之后、用户因为没有刷新页面/清除缓存&#xff0c;一直使用的还是旧版本。所以就着手写一个检测到发布了新版本就自动提醒用户去刷新页面的功能…

指针笔试题讲解

文章目录 题目答案与解析1、234、5、6、7、8、 题目 int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; }//由于还没学习结构体&#xff0c;这里告知结构体的大小是20个字节 //由于还没学习结…

第十二届钧瓷文化旅游节主题曲:让世界看见钧瓷的魅力

下面大禹智库是以产业,古镇,营销为主题专门为第十二届钧瓷文化旅游节创作的《让世界看见钧瓷的魅力》的歌词。 编辑搜图 古镇千年的沉淀,窑火燃烧的传说 传承着古老的技艺,匠人们用心铸就 钧瓷的魅力,吸引着世界的目光 这里的风景,如诗如画,如梦如幻 编辑搜图 钧瓷文…

QT程序打包图片无法正常显示

QT程序打包图片无法正常显示 环境&#xff1a; QT4.8.2VS2017opencv3.416 问题&#xff1a; 本机测试正常&#xff0c;图片可正常显示功能也可正常进行&#xff0c;但打包发送给没有环境数据的电脑上进行测试就会出现图片无法显示的问题。 原因&#xff1a; 并没有找到理论支撑…

【C++】class的设计与使用(三)mutable(可变)和const(不变)

const class Triangular{ public:int length() const{return _length;}int beg_pos() const{return _beg_pos;}int elem(int pos) const;bool next(int &val);void next_reaset(){_next_beg_pos-1;}static vector<int>_elems;const修饰符紧接在函数参数列表之后&…

inject和provide的使用

官网介绍用法 V2.2.0 新增的方法 类型 provide&#xff1a;Object | () > Object inject&#xff1a;Array<string> | { [key: string]: string | Symbol | Object }介绍 这对选项需要一起使用&#xff0c;以允许一个祖先组件向其所有子孙后代注入一个依赖&#xff…

代码随想录第34天 | 343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 /*** param {number} n* return {number}*/ var integerBreak function(n) {let dpnew Array(n1)dp.fill(1)for(let i3;i<n;i)for(let j1;j<i/2;j){dp[i] max(dp[i],max(j*(i-j),dp[i-j]*j))} function max(a,b){return a>b?a:b }return dp[n] }; 想…

Linxu下c语言实现socket+openssl数据传输加密

文章目录 1. Socket连接建立流程2、SocketSSL的初始化流程3、初始化SSL环境&#xff0c;证书和密钥4、SocketSSL 的c语言实现4.1 编写SSL连接函数4.2 编写加密服务端server.c4.3 编写加密客户端client.c 5、使用tcpdump检验源码获取 在进行网络编程的时候&#xff0c;我们通常使…

给出一个数组,分析当下的位置他左边有几个比他上的。

给出一个数组&#xff0c;分析当下的位置他左边有几个比他上的。 6 4 3 0 5 1 2 0 0 0 3 1 2 #include<iostream> using namespace std;int cnt(int arr[], int idx) {if (idx 0) {return 0;}int s 0;for (int i 0; i < idx; i)if (arr[i] < arr[idx])s 1;ret…

【BUG】循环中重复使用对象一定要注意

“ 有时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能未同步&#xff0c;请认准https://blog.zysicyj.top ” 首发博客地址 文章更新计划 系列文章地址 报错内容 报错信息显示ID重复。 原因分析 在最终添加的方法中&#xff0c;出现了重复ID的报…

体育运动模板推荐

最近的朋友圈一半是晒国庆城市布置的美景的&#xff0c;一半当然就是杭州亚运会了。目前杭州亚运会正在如火如荼的进行中&#xff0c;绝美的开幕式&#xff0c;运动健儿们奋力拼搏的精神&#xff0c;在杭州亚运会的舞台上&#xff0c;每个人都是独一无二的英雄。亚运会的舞台&a…

C语言学习(1)—— 环境安装和配置

运行C语言和C程序需要安装MinGW和VSCode。 一. 安装MinGW 1、进入官网下载MinGW&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ 2、解压缩 3、配置环境变量 4、检查是否安装成功 二. 安装VSCode 1、进入官网下载VSCode&#xff1a;https://code.visualstud…

Frp内网穿透

Frp简介 Frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 Frp工作原理&#xff1a; 服务端运行&#xff0c;监听一个主端口&#xff0c;等待…

如何扫描MSI安装文件的路径

今天有个需求&#xff0c;需要扫描已经安装应用, 其中有个华云桌面 其中的UninstallString 值是 MsiExec.exe /X{D20A661B-0CBA-4DE3-A1F6-353D8153725D} 无法直接获取其安装目录&#xff0c; MsiGetProductInfoW 等API INSTALLPROPERTY_INSTALLLOCATION 也不好使 自己写一个…