Linux多线程同步——互斥锁
互斥锁
当多个线程对同一个资源进行访问的时候,为了这个资源的安全性,我们需要对这个资源进行锁定,规定同一时间只有一个资源能够获得该锁的钥匙,其它线程要获得该资源需要等待该线程
互斥锁创建
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多线程同步——互斥锁相关推荐
- Linux多线程编程-互斥锁
互斥锁 多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量.POSIX互斥锁相关函数主要有以下5个: #include <p ...
- Linux下多线程编程互斥锁和条件变量的简单使用
Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...
- Linux c线程间的同步----互斥锁、条件变量、信号量
线程 一个进程中的所有线程共享为进程分配的地址空间.所以进程地址空间中的代码段和数据段都是共享的. 如果定义一个函数在各个线程中都可以调用,定义一个全部变量,在各个线程中都可以访问到. 各线程共享资源 ...
- Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用
Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...
- linux多线程同步概览
linux多线程同步概览 临界区 互斥锁 mutex 基本函数 pthread_mutex_destroy 何时调用? 互斥锁类型? 互斥量和自旋锁的区别 条件变量 condition variabl ...
- linux之mutex(互斥锁)
在Posix Thread中定义有一套专门用于线程同步的mutex函数 1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式.POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZ ...
- MFC多线程同步互斥
MFC多线程同步互斥[转载] http://blog.sina.com.cn/s/blog_62d15fb601017dhn.html https://www.cnblogs.com/zhanghu5 ...
- Linux多线程开发-线程同步-互斥锁pthread_mutex_t
1.互斥锁 同一时刻只允许一个线程对临界区进行访问.POSIX库中用类型pthread_mutex_t来定义互斥锁,类型在pthreadtypes.h中定义. 2.如何声明一个互斥锁 #include ...
- Linux多线程——使用互斥量同步线程
前文再续,书接上一回,在上一篇文章:Linux多线程--使用信号量同步线程中,我们留下了一个如何使用互斥量来进行线程同步的问题,本文将会给出互斥量的详细解说,并用一个互斥量解决上一篇文章中,要使用两个 ...
最新文章
- Linux文件查找工具的探索
- Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project 'drp2.8'. ja
- 面试常见的C语言字符串操作
- html读mysql数据_html从数据库中读取数据
- hdu 1561 The more, The Better (依赖背包 树形dp)
- HTML5矢量实现文件上传进度条
- java2实用教程 第四版 上机实践4代码_Java2实用教程实验指导模版代码
- CheckMarx源代码安全测试工具
- breadweb控制台下载_路由器刷breed web控制台助手通用版
- 如何把书上的字弄到电脑!
- AI智能语音识别算法原理 二
- 写了三年程序,我25了.
- 基于matlab数字滤波器设计,基于MATLAB环境的数字滤波器设计
- C# 使用HTMLhelp生成chm文件添加搜索并解决搜索找不到主题的问题
- Ubuntu20安装搜狗拼音输入法
- android圆形头像边框,利用Android中BitmapShader制作自带边框的圆形头像
- alertmanager配置详解
- 洛谷 P1725 琪露诺 题解
- 文明之剑-我读王晋康科幻小说
- 计算机软件企业申请商标,软件商标注册申请流程
热门文章
- python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
- vector iterator not incrementable 的问题
- 第十天2017/04/21(1、函数指针、❤动态库回调❤)
- 【Tools】cmake 常用变量和常用环境变量查表手册---整理
- 【Linux】13.linux内核切换
- Caffe学习系列(20):用训练好的caffemodel来进行分类
- Vue.js 表单输入绑定
- Mybatis的ResultMap的使用
- 【LaTeX】E喵的LaTeX新手入门教程(2)基础排版
- 如何做一名优秀的博士生--施一公教授