初始化互斥锁

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;
}

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

POSIX互斥锁api函数相关推荐

  1. POSIX互斥锁自旋锁

    基础组件-POSIX互斥锁自旋锁 基础组件 基础组件-POSIX互斥锁自旋锁 前言 一.互斥锁 二.自旋锁 特点: 场景: 使用原则 自旋锁属性 三.两把锁的区别 1. 调度策略 2.使用场景 四.常 ...

  2. openmp 互斥锁 mysql_openMP 函数总结(并行程序设计导论)

    本篇文章只是记录api的用法和回顾,方便记忆 openMP openMP提供"基于指令"的共享内存API.这就意味着在c和c++中,有一些特殊的预处理指令pragma.在系统中加入 ...

  3. POSIX条件变量API函数

    初始化条件变量 int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *attr); 返回值:函数成功返回0:任何其他 ...

  4. c++ linux 线程等待与唤醒_C++ Linux线程同步机制:POSIX信号量,互斥锁,条件变量...

    线程同步机制:POSIX 信号量,互斥量,条件变量 POSIX 信号量 常用的POSIX 信号量函数为如下5个: sem_init sem_destroy sem_wait sem_trywait s ...

  5. POSIX 信号量和互斥锁

    1.POSIX信号量 1.有名信号量 #include <fcntl.h>           /* For O_* constants */ #include <sys/stat. ...

  6. linux进程线程同步之 - POSIX线程互斥锁

    POSIX线程互斥锁 使用范围:线程同步 本文转自:http://blog.csdn.net/jiebaoabcabc/article/details/37914769 一.函数介绍 1.初始化互斥锁 ...

  7. linux线程间同步(1)互斥锁与条件变量

    线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点.linux下提供了多种方式来处理线程同步,最常用的是互斥锁.条件变量和信号量以及读写锁. 互斥锁(mutex) 互斥锁,是一种信 ...

  8. [C/C++]_[初级]_[ 线程pthread学习之互斥锁和条件变量的应用 ]

    一.互斥锁 互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源. 需要的头文件:pthread.h 互斥锁标识符:pthread_mutex_t (1)互斥锁初始化: 函数原型 ...

  9. 进程通信学习笔记(互斥锁和条件变量)

    1.互斥锁:上锁和解锁 Posix互斥锁作为数据类型pthread_mutex_t的变量声明.如果互斥锁变量是静态分配的,那么可以把它初始化成常值PTHREAD_MUTEX_INITIALIZER.如 ...

最新文章

  1. 如何用Pandas处理文本数据?
  2. 我用1台笔记本模拟黑洞引力波,和超算2个月得出的结果只差1%丨马萨诸塞大学出品...
  3. 【GIF动画+完整可运行源代码】C++实现 插入排序——十大经典排序算法之三
  4. 单源最短路径之迪杰斯特拉算法(C语言)
  5. c fscanf 按行读取文件_语言 文件 看这一篇就够了
  6. [转载] python价值算法_PangRank算法原理及其Python实现
  7. 能否利用Hadoop搭建完整的云计算平台
  8. 长连接和短连接的定义区别,以及应用场景
  9. 【观察】飞象工业互联网平台,阿里云IoT的沉淀与释放
  10. 微信视频号运营 1000 问
  11. ps导出发生未知错误,怎么办?
  12. python求表面积代码_用于计算python中的体积或表面积的良好算法
  13. 论文分为哪几个级别(一)
  14. 剑灵力士卡刀ahk_技术宅分享 剑灵召唤一键卡刀代码使用教程
  15. 解决Mysql执行删除操作报错:1093的问题
  16. 跟益达学Solr5之Facet一瞥
  17. mac下安装centos8
  18. python实训三 编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果
  19. 基于springboot和vue实现oss上传
  20. 2019年06月03日

热门文章

  1. php gearman 扩展,Ubuntu 12.04 安装 gearman 以及php扩展安装脚本
  2. 炼丹必备!推荐一个超级好用的机器学习云平台
  3. 这个NLP工具,玩得根本停不下来
  4. Solr空间搜索原理分析与实践
  5. 用Vue.js开发微信小程序:开源框架mpvue解析
  6. 开源开放 | 开源网络通信行业知识图谱(新华三)
  7. 论文小综 | Using External Knowledge on VQA
  8. 论文浅尝 | 基于动态记忆的原型网络进行元学习以实现少样本事件探测
  9. 白雪 | NLP加持知识图谱在金融事件挖掘中的应用
  10. Lucene基本使用和代码实现