进程,线程之间,使用锁互斥。如果某一方加锁后,莫名其妙的退出,崩溃了;然后呢,另外一方就傻眼了,加锁加不上,卡死。

  所以,可以考虑使用超时加锁办法:

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相关推荐

  1. 一文搞定Linux环境下线程编程,这些东西老师也不会教你。(史上最详细的线程攻略)

    一.线程的概念 1.1 什么是线程 线程是一个实体,是CPU调度和分派的基本单元,有时我们也可以称它为轻量级的进程.每个线程都包含有表示执行环境所必须的信息,其中包括标识线程 的线程ID.一组寄存器值 ...

  2. python redis分布式锁_Python 使用 Redis 实现分布式锁

    前言 随着互联网技术的不断发展,用户量的不断增加,越来越多的业务场景需要用到分布式系统.而在分布式系统中访问共享资源就需要一种互斥机制,来防止彼此之间的互相干扰,以保证一致性,这个时候就需要使用分布式 ...

  3. 1.10、Java面经 内容太杂不详细 没用

    1.1java 的 8 种基本数据类型 装箱 拆箱 https://blog.csdn.net/daidaineteasy/article/details/51088269 1.1.1.8 种基本数据 ...

  4. 深入并发线程、进程、纤程、协程、管程与死锁、活锁、锁饥饿详解

    一.进程.线程.纤程.协程.管程概念理解 在现在你可能会经常看到进程.线程.纤程.协程.管程.微线程.绿色线程....一大堆xx程的概念,其实这些本质上都是为了满足并行执行.异步执行而出现的一些概念. ...

  5. php牛逼的面试题分享

    1.nginx使用哪种网络协议?  nginx是应用层 我觉得从下往上的话 传输层用的是tcp/ip 应用层用的是http  fastcgi负责调度进程 2. <? echo 'hello tu ...

  6. 分布式锁及数据一致性

    目录 (一)分布式锁 (1)本地锁 (2)分布式锁演进--阶段一(加锁) (3)分布式锁演进--阶段二(锁超时) (4)分布式锁演进--阶段三 (5)分布式锁演进--阶段四 (6)分布式锁核心 (二) ...

  7. 从ReentrantLock出发看AQS(一)

    AQS 什么是AQS? 是阻塞式锁和相关同步器工具的框架,如ReentrantLock内部就持有这个同步器,具体实现都是调用同步器的API实现加锁解锁 ======================== ...

  8. 线程控制、如何给面试官描述线程不安全的情况?模拟黄牛抢票展现不安全的情况及解决方式、互斥锁加锁解锁

    多线程1 线程概念 线程控制 线程创建 线程终止 线程等待 线程分离 线程安全 如何给面试官描述线程不安全的现象? 线程不安全的情况(模拟黄牛抢票) 互斥 互斥锁的原理 互斥锁的接口 静态初始化 动态 ...

  9. sem_timedwait和pthread_cond_timedwait、pthread_mutex_timedlock()

    问题:当向前向后设置系统时间时,sem_timedwait和pthread_cond_timedwait会出现长时间堵塞或一直堵塞的情况: 分析:sem_timedwait() 是 通过传入未来的某个 ...

  10. pthread_mutex_timedlock

    参考博文:https://blog.csdn.net/wynter_/article/details/53443994 #include <stdio.h> #include <ti ...

最新文章

  1. k2677场效应管参数引脚_场效应管参数大全2.doc
  2. javaScript实现字符串首字母大写
  3. 细数二十世纪最伟大的十大算法
  4. signature=9e6873686326b073f8f457fa0e6c2f70,Signature required
  5. LeetCode 219. 存在重复元素 II(哈希)
  6. python数组内运算_有效的数学运算在Python中用cython进行小数组运算
  7. python制作查询工具发给别人使用_用Python做一个简单的翻译工具
  8. html字符串长度函数,最常用的20个javascript方法函数
  9. Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁
  10. stupid soso spider
  11. 基于水平集方法和G0模型的SAR图像分割
  12. jQuery学习笔记:文档处理
  13. 目标检测M2Det论文总结
  14. vs2008 sp1下载中
  15. 【Neo4j】第 1 章:图数据库
  16. 机房搬迁的一般步骤方案
  17. 【XJTUSE计算机图形学】第四章 真实感图形学(1)——–颜色视觉
  18. 计算机ms高级应用科目一 科目二考什么,驾考提前知 | 科目一、科目二、科目三、科目四都考什么?...
  19. ACM 常用思维技巧
  20. canvas-樱花飘落

热门文章

  1. jquery 同胞 siblings next nextAll nextUtil pre preAll preUtil
  2. hosts 文件目录
  3. Java并发编程之ThreadLocal详解
  4. 步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
  5. 全面解读新中产:有房有车有贷、半数决策看老婆
  6. Python Jupyter QtConsole
  7. AMD Catalyst 14.4 Linux带来完整的 OpenGL 4.4 支持
  8. (6)java的内存泄露问题
  9. ubuntu不能更新包
  10. Packet Tracer 5.0建构CCNA实验攻略2配置vlan