使用超时加锁:pthread_mutex_timedlock
进程,线程之间,使用锁互斥。如果某一方加锁后,莫名其妙的退出,崩溃了;然后呢,另外一方就傻眼了,加锁加不上,卡死。
所以,可以考虑使用超时加锁办法:
struct timespec time_out;
clock_gettime(CLOCK_REALTIME, &time_out);
time_out.tv_sec += seconds;
//time_out.tv_nsec += mills*1000*1000;
pthread_mutex_timedlock(pMutex, &time_out);
注意:
- 多次释放是否会有问题?
- 这个局部变量要声明位置,避免在lock期间释放
- 也可以考虑pthread_mutex_trylock
理想是美好的,试了之后发现,只要进程死了,再次启动双方就会卡死。原因未知,以后有机会再深入检查。目前解决办法就是主进程起来,先杀辅进程,然后再次启动。
使用超时加锁:pthread_mutex_timedlock相关推荐
- 一文搞定Linux环境下线程编程,这些东西老师也不会教你。(史上最详细的线程攻略)
一.线程的概念 1.1 什么是线程 线程是一个实体,是CPU调度和分派的基本单元,有时我们也可以称它为轻量级的进程.每个线程都包含有表示执行环境所必须的信息,其中包括标识线程 的线程ID.一组寄存器值 ...
- python redis分布式锁_Python 使用 Redis 实现分布式锁
前言 随着互联网技术的不断发展,用户量的不断增加,越来越多的业务场景需要用到分布式系统.而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,这个时候就需要使用分布式 ...
- 1.10、Java面经 内容太杂不详细 没用
1.1java 的 8 种基本数据类型 装箱 拆箱 https://blog.csdn.net/daidaineteasy/article/details/51088269 1.1.1.8 种基本数据 ...
- 深入并发线程、进程、纤程、协程、管程与死锁、活锁、锁饥饿详解
一.进程.线程.纤程.协程.管程概念理解 在现在你可能会经常看到进程.线程.纤程.协程.管程.微线程.绿色线程....一大堆xx程的概念,其实这些本质上都是为了满足并行执行.异步执行而出现的一些概念. ...
- php牛逼的面试题分享
1.nginx使用哪种网络协议? nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http fastcgi负责调度进程 2. <? echo 'hello tu ...
- 分布式锁及数据一致性
目录 (一)分布式锁 (1)本地锁 (2)分布式锁演进--阶段一(加锁) (3)分布式锁演进--阶段二(锁超时) (4)分布式锁演进--阶段三 (5)分布式锁演进--阶段四 (6)分布式锁核心 (二) ...
- 从ReentrantLock出发看AQS(一)
AQS 什么是AQS? 是阻塞式锁和相关同步器工具的框架,如ReentrantLock内部就持有这个同步器,具体实现都是调用同步器的API实现加锁解锁 ======================== ...
- 线程控制、如何给面试官描述线程不安全的情况?模拟黄牛抢票展现不安全的情况及解决方式、互斥锁加锁解锁
多线程1 线程概念 线程控制 线程创建 线程终止 线程等待 线程分离 线程安全 如何给面试官描述线程不安全的现象? 线程不安全的情况(模拟黄牛抢票) 互斥 互斥锁的原理 互斥锁的接口 静态初始化 动态 ...
- sem_timedwait和pthread_cond_timedwait、pthread_mutex_timedlock()
问题:当向前向后设置系统时间时,sem_timedwait和pthread_cond_timedwait会出现长时间堵塞或一直堵塞的情况: 分析:sem_timedwait() 是 通过传入未来的某个 ...
- pthread_mutex_timedlock
参考博文:https://blog.csdn.net/wynter_/article/details/53443994 #include <stdio.h> #include <ti ...
最新文章
- k2677场效应管参数引脚_场效应管参数大全2.doc
- javaScript实现字符串首字母大写
- 细数二十世纪最伟大的十大算法
- signature=9e6873686326b073f8f457fa0e6c2f70,Signature required
- LeetCode 219. 存在重复元素 II(哈希)
- python数组内运算_有效的数学运算在Python中用cython进行小数组运算
- python制作查询工具发给别人使用_用Python做一个简单的翻译工具
- html字符串长度函数,最常用的20个javascript方法函数
- Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁
- stupid soso spider
- 基于水平集方法和G0模型的SAR图像分割
- jQuery学习笔记:文档处理
- 目标检测M2Det论文总结
- vs2008 sp1下载中
- 【Neo4j】第 1 章:图数据库
- 机房搬迁的一般步骤方案
- 【XJTUSE计算机图形学】第四章 真实感图形学(1)——–颜色视觉
- 计算机ms高级应用科目一 科目二考什么,驾考提前知 | 科目一、科目二、科目三、科目四都考什么?...
- ACM 常用思维技巧
- canvas-樱花飘落
热门文章
- jquery 同胞 siblings next nextAll nextUtil pre preAll preUtil
- hosts 文件目录
- Java并发编程之ThreadLocal详解
- 步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
- 全面解读新中产:有房有车有贷、半数决策看老婆
- Python Jupyter QtConsole
- AMD Catalyst 14.4 Linux带来完整的 OpenGL 4.4 支持
- (6)java的内存泄露问题
- ubuntu不能更新包
- Packet Tracer 5.0建构CCNA实验攻略2配置vlan