互斥锁

当多个线程对同一个资源进行访问的时候,为了这个资源的安全性,我们需要对这个资源进行锁定,规定同一时间只有一个资源能够获得该锁的钥匙,其它线程要获得该资源需要等待该线程


互斥锁创建

pthread_mutex_t mutex;

互斥锁初始化

mutex = PTHREAD_MUTEX_INITIALIZER;
或 pthread_mutex_init(&mutex);

互斥锁上锁

pthread_mutex_lock(&mutex);

互斥锁解锁

pthread_mutex_lock(&mutex);

销毁互斥锁

pthread_mutex_destroy(&mutex);


#include <pthread.h>
#include <sys/syscall.h>
#include <stdlib.h>
#include <stdio.h>void* ret_result_thread1;
void* ret_result_thread2;
pthread_mutex_t mutex;void* thread1Func(void* arg)
{pthread_mutex_lock(&mutex);printf("childThread id:%u is running\n", syscall(SYS_gettid));sleep(5);pthread_mutex_unlock(&mutex);pthread_exit((void*)0);
}int main(int argc, char** argv)
{printf("main thread start\n");pthread_mutex_init(&mutex,NULL);pthread_t thread1,thread2;int ret1;int ret2;if( (ret1 = pthread_create(&thread1,NULL,thread1Func,NULL)) != 0){perror("thread1 create failed");}if( (ret2 = pthread_create(&thread2,NULL,thread1Func,NULL)) != 0){perror("thread2 create failed");}printf("main thread end\n");pthread_join(thread1,ret_result_thread1);pthread_join(thread2,ret_result_thread2); pthread_mutex_destroy(&mutex);return 0;
}


线程1运行,等2秒,线程1释放锁,线程2执行

Linux多线程同步——互斥锁相关推荐

  1. Linux多线程编程-互斥锁

    互斥锁 多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量.POSIX互斥锁相关函数主要有以下5个: #include <p ...

  2. Linux下多线程编程互斥锁和条件变量的简单使用

    Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...

  3. Linux c线程间的同步----互斥锁、条件变量、信号量

    线程 一个进程中的所有线程共享为进程分配的地址空间.所以进程地址空间中的代码段和数据段都是共享的. 如果定义一个函数在各个线程中都可以调用,定义一个全部变量,在各个线程中都可以访问到. 各线程共享资源 ...

  4. Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用

    Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...

  5. linux多线程同步概览

    linux多线程同步概览 临界区 互斥锁 mutex 基本函数 pthread_mutex_destroy 何时调用? 互斥锁类型? 互斥量和自旋锁的区别 条件变量 condition variabl ...

  6. linux之mutex(互斥锁)

    在Posix Thread中定义有一套专门用于线程同步的mutex函数 1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式.POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZ ...

  7. MFC多线程同步互斥

    MFC多线程同步互斥[转载] http://blog.sina.com.cn/s/blog_62d15fb601017dhn.html https://www.cnblogs.com/zhanghu5 ...

  8. Linux多线程开发-线程同步-互斥锁pthread_mutex_t

    1.互斥锁 同一时刻只允许一个线程对临界区进行访问.POSIX库中用类型pthread_mutex_t来定义互斥锁,类型在pthreadtypes.h中定义. 2.如何声明一个互斥锁 #include ...

  9. Linux多线程——使用互斥量同步线程

    前文再续,书接上一回,在上一篇文章:Linux多线程--使用信号量同步线程中,我们留下了一个如何使用互斥量来进行线程同步的问题,本文将会给出互斥量的详细解说,并用一个互斥量解决上一篇文章中,要使用两个 ...

最新文章

  1. Linux文件查找工具的探索
  2. Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'drp2.8'. ja
  3. 面试常见的C语言字符串操作
  4. html读mysql数据_html从数据库中读取数据
  5. hdu 1561 The more, The Better (依赖背包 树形dp)
  6. HTML5矢量实现文件上传进度条
  7. java2实用教程 第四版 上机实践4代码_Java2实用教程实验指导模版代码
  8. CheckMarx源代码安全测试工具
  9. breadweb控制台下载_路由器刷breed web控制台助手通用版
  10. 如何把书上的字弄到电脑!
  11. AI智能语音识别算法原理 二
  12. 写了三年程序,我25了.
  13. 基于matlab数字滤波器设计,基于MATLAB环境的数字滤波器设计
  14. C# 使用HTMLhelp生成chm文件添加搜索并解决搜索找不到主题的问题
  15. Ubuntu20安装搜狗拼音输入法
  16. android圆形头像边框,利用Android中BitmapShader制作自带边框的圆形头像
  17. alertmanager配置详解
  18. 洛谷 P1725 琪露诺 题解
  19. 文明之剑-我读王晋康科幻小说
  20. 计算机软件企业申请商标,软件商标注册申请流程

热门文章

  1. python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
  2. vector iterator not incrementable 的问题
  3. 第十天2017/04/21(1、函数指针、❤动态库回调❤)
  4. 【Tools】cmake 常用变量和常用环境变量查表手册---整理
  5. 【Linux】13.linux内核切换
  6. Caffe学习系列(20):用训练好的caffemodel来进行分类
  7. Vue.js 表单输入绑定
  8. Mybatis的ResultMap的使用
  9. 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版
  10. 如何做一名优秀的博士生--施一公教授