POSIX互斥锁api函数

初始化互斥锁

int	pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr);

参数attr指定了新建互斥锁的属性。如果参数attr为NULL,则使用默认的互斥锁属性。

锁定互斥锁

int	pthread_mutex_lock(pthread_mutex_t *mutex); 

当 pthread_mutex_lock() 返回时,该互斥锁已被锁定。调用线程是该互斥锁的属主。如果该互斥锁已被另一个线程锁定和拥有,则调用线程将阻塞,直到该互斥锁变为可用为止。

解除互斥锁

int	pthread_mutex_unlock(pthread_mutex_t *mutex); 

释放 mutex 引用的互斥锁对象。如果调用 pthread_mutex_unlock() 时有多个线程被 mutex 对象阻塞,则互斥锁变为可用时调度策略可确定获取该互斥锁的线程。 

使用非阻塞方式锁定

int	pthread_mutex_trylock(pthread_mutex_t *mutex); 

如果 mutex 所引用的互斥对象当前被任何线程(包括当前线程)锁定,则将立即返回该调用。

销毁互斥锁

int	pthread_mutex_destroy(pthread_mutex_t *mp); 

一个例子:

#include <pthread.h>
#include <stdio.h>pthread_mutex_t mutex ;
void *print_msg(void *arg){int i=0;pthread_mutex_lock(&mutex);for(i=0;i<15;i++){printf("output : %d\n",i);usleep(100);}pthread_mutex_unlock(&mutex);
}
int main(int argc,char** argv){pthread_t id1;pthread_t id2;pthread_mutex_init(&mutex,NULL);pthread_create(&id1,NULL,print_msg,NULL);pthread_create(&id2,NULL,print_msg,NULL);pthread_join(id1,NULL);pthread_join(id2,NULL);pthread_mutex_destroy(&mutex);return 1;
}

结果是一个线程一个线程地执行。

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

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

相关文章

mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...

官网示例官网地址&#xff1a;https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-ApacheWeblogData下载数据wget http://files.grouplens.org/datasets/movielens/ml-100k.zip我们下载好数据安装unzip yum install -y unzip解压数据创建库创建表…

从空城计到阿尔法狗,博弈论如何渗透我们的生活?

来源&#xff1a;返朴2016年&#xff0c;有那么一只“狗”大闹天宫&#xff0c;这在整个人类社会引起了轩然大波。它就是阿尔法狗&#xff08;AlphaGo&#xff09;&#xff0c;是谷歌&#xff08;Google&#xff09;旗下公司DeepMind 在人工智能与博弈论交叉研究上的一个杰作。…

POSIX条件变量API函数

初始化条件变量 int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *attr); 返回值&#xff1a;函数成功返回0&#xff1b;任何其他返回值都表示错误 初始化一个条件变量。当参数attr为空指针时&#xff0c;函数创建的是一个缺省的条件变量。 阻塞 in…

阶段性思考

算上在学校&#xff0c;学习前端已经两年了&#xff0c;但水平依旧不高&#xff0c;至今都只愿意钻研布局和交互&#xff0c;把兼容和动效玩得哈皮&#xff0c;但其实依旧没有装逼的自信。 也不得不回到当初的那个思考&#xff0c;如果只是做网页&#xff0c;又何必弄前端&…

反弹式木马原理_汽车避震器的原理与改装问题

一、避震器or避振器“震”字是指车轮在路面的滚动过程中&#xff0c;由于路面的不平&#xff0c;从路面传递上来的震动&#xff0c;而不是人为制造“振”动&#xff0c;所以使用“震”字更科学。二、避震器的工作原理避震器的工作原理是通过活塞运动产生阻尼力&#xff0c;将动…

科学探索奖首批50名获奖者都有谁?

来源&#xff1a;知识分子9月20日上午&#xff0c;经过四个多月的评审&#xff0c;2019年 获奖名单正式公布。来自全国26个科研单位、高校和企业的50位科学家成为首届“科学探索奖”获奖者&#xff0c;每人将在未来5年获得由腾讯基金会资助的300万元人民币。据悉&#xff0c;20…

python_递归原理

需要:  输出这样一些有规律数据: [0,1,1,2,3,5,8,13,21,34.......]看上面需要好像有一些规律&#xff0c;没错&#xff0c;就是大家熟悉的婓那波契数列,n(n-1)(n-2)如1385&#xff1b;运用递归原理得:def func(arg1,arg2): if arg1 0: print arg1,arg2 arg3 a…

POSIX信号量API函数

头文件&#xff1a;semaphore.h 初始化&#xff1a; int sem_init(sem_t *sem, int pshared, unsigned int value); sem_init() 初始化一个信号量&#xff0c;信号量对象为sem。value 参数指定信号量的初始值。 pshared 参数指明信号量是由进程内线程共享&#xff0c;还是由…

untitled软件怎么用_苹果手机怎么用4G网络于App Store下载超过200MB以上的软件

近两年来&#xff0c;随着苹果中国市场份额被国产品牌挤占了不少&#xff0c;他们越来越懂得“聆听”中国用家的需要&#xff0c;其中一项便是用手机网络(4G)下载iOS应用。在这一点上我们中国人也不用再妄自菲薄了&#xff0c;在疯狂的4G建网以后&#xff0c;我们国家已经拥有全…

关于人脸识别的最全研究!

来源&#xff1a;北京物联网智能技术应用协会本文内容涵盖人脸识别发展历程、市场研究、核心技术、商业应用以及产业落地、个人看法等干货研究。注意&#xff0c;本文干货满满&#xff0c;约有2万7千字&#xff0c;强烈建议大家先收藏后学习&#xff01;01 发展史1. 人脸识别的…

Stream学习过程中遇到的一个问题记录

Stream学习过程中遇到的一个问题记录 Test public void stream_modifiedV2(){List<String> strings Arrays.asList("aaa","bb","cc","dddddddddddddddddddddddddddddddd");Stream<String> stringStream strings.stream(…

C++ swap用法

swap用于交换两个元素的值 template<class T> void swap(T &a,T &b) {T c(a);ab;bc; } 例如交换两个int型变量的值&#xff1a; #include <iostream> using namespace std;int main() {int a1,b2;swap(a,b);cout<<a<<" "<<…

python table类中的 可以作为初步观察工具_Python程序设计基础_课程2020最新章节测试网课课后答案...

Python程序设计基础_课程2020最新章节测试网课课后答案更多相关问题科学探究的过程一般要经过______、作出假设、制定方案、实施方案&#xff0c;得出结论等五个步骤&#xff0e;在生物学研究中&#xff0c;当实验的结果与原有的知识发生矛盾时&#xff0c;应大胆地修正原有的知…

关于字节对齐以及内存占用

参考博文&#xff1a; http://www.javamex.com/tutorials/memory/object_memory_usage.shtml 本文主要考虑正常情况下一个对象在堆上的内存占用情况&#xff1a;对于下面的特殊情况不作讨论 1、某些情况下&#xff0c;JVM可能不会把对象存储在堆上&#xff1a;比如小的线程私有…

人工智能应用实践与趋势

来源&#xff1a;阿里云研究中心《崛起的超级智能》一书主要阐述当今天人类为人工智能的春天到来而兴奋&#xff0c;为人工智能是否超越人类而恐慌的时候&#xff0c;一个更为庞大、远超人类预期的智能形态正在崛起&#xff0c;种种迹象表明50年来&#xff0c;互联网正在从网状…

C++中set和map的erase用法

删除容器中值为 val 的元素 size_type erase (const value_type& val); 删除 it迭代器指向的元素 iterator erase (const_iterator it); 删除 [first,last) 区间内的所有元素 iterator erase (const_iterator first, const_iterator last);

excel表格打印每页都有表头_这么漂亮的Excel表格,用黑白打印机打印真是可惜了...

我们在日常工作中&#xff0c;利用Excel制作的表格通过会填充颜色&#xff0c;设置字体和边框格式、颜色&#xff0c;把表格弄的漂漂亮亮的&#xff0c;一个是为了缓解视觉疲劳&#xff0c;另一个是为了老板看到漂亮的表格一不小心加工资呢&#xff0c;但是一个问题出来了&…

常用的分隔符有哪三种_加固博士:常用防水材料大比拼,究竟花落谁家?

建筑物漏水问题&#xff0c;是日常生活中非常常见的问题&#xff0c;房屋漏水怎么办才好呢&#xff1f;这个问题困扰了很多人&#xff0c;有些户主会图个省事&#xff0c;将漏水问题直接交给装修公司&#xff0c;只要愿意支付防水施工费用&#xff0c;装修公司就会安排资深的师…

svg笔记----------path篇

每个路径都必须以moveto 命令开始 moveto、lineto和closepath <path d"M 10 10 L 100 10z"/> 大写字母命令的坐标是绝对的&#xff0c;小写字母命令的坐标是相对的。其它情况&#xff1a; 1.z(closepath)命令没有坐标&#xff0c;它的大小写形式效果相同。 2.如…

互联网大脑,城市大脑的“大脑”究竟什么含义?

来源&#xff1a;刘锋的未来课堂21世纪以来&#xff0c;科技领域与一个神经学领域的概念 “大脑”出现了意外的结合&#xff0c;涌现出诸多前沿科技的大脑概念。从互联网大脑&#xff0c;城市大脑&#xff0c;到谷歌大脑&#xff0c;百度大脑&#xff0c;讯飞超脑、360安全大脑…