使用超时加锁:pthread_mutex_timedlock

简介: 使用超时加锁: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

 理想是美好的,试了之后发现,只要进程死了,再次启动双方就会卡死。原因未知,以后有机会再深入检查。目前解决办法就是主进程起来,先杀辅进程,然后再次启动。


目录
相关文章
|
测试技术 程序员 C++
C++单元测试GoogleTest和GoogleMock十分钟快速上手(gtest&gmock)
gtest是Google开源的一个跨平台的(Liunx、Mac OS X、Windows等)的 C++ 单元测试框架,可以帮助程序员测试 C++ 程序的结果预期。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。另一方面,gmock并不是一个独立的测试框架,而是gtest的辅助框架,主要用于模拟没有实现的类的操作,以便在没有完整类的情况下进行测试。通过配合使用gtest和gmock,开发者可以编写出更为复杂且健壮的C++单元测试。
1819 0
|
缓存 测试技术 编译器
【CMake 疑难解决 】解决find_library查找位置不对的问题
【CMake 疑难解决 】解决find_library查找位置不对的问题
875 3
|
编译器 Linux C语言
深入探讨Linux中的atoi()和itoa()函数
在C语言中,`atoi()`和`itoa()`函数是处理字符串和整数之间转换的重要工具。本文将详细介绍这两个函数的使用方法、用途以及注意事项,帮助读者更好地理解如何在字符串和整数之间进行转换。
1718 0
|
6月前
|
定位技术
安徽京准分享:北斗RDSS授时和北斗授时RNSS的区别
安徽京准分享:北斗RDSS授时和北斗授时RNSS的区别
1208 15
|
6月前
|
Shell 开发工具 git
解决Git中没有小绿勾与红叉叉的问题
找到下面这个地址:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers。后产生的,要在圈住的这几个在前面,添加空格(右击重命名加空格就能使它提到前面)关于要添加几个空格的问题,一般来说添加四个或者八个就可以。然后,重启电脑就能产生小绿勾和红叉叉的图标了。运行完重启电脑就好使。注意这一步一定要操作对,操作错误就会很多麻烦。寻找与自己电脑相配的软件版本就可以了。
939 0
|
Unix Shell Linux
linux互斥锁(pthread_mutex)知识点总结
linux互斥锁(pthread_mutex)知识点总结
|
Prometheus Kubernetes 安全
5 款漏洞扫描工具:实用、强力、全面(含开源)(一)
5 款漏洞扫描工具:实用、强力、全面(含开源)
4394 1
5 款漏洞扫描工具:实用、强力、全面(含开源)(一)
|
C++
gRPC 四模式之 服务器端流RPC模式
gRPC 四模式之 服务器端流RPC模式
390 0
|
安全 Linux
Linux中ldd命令的依赖复制技巧
`ldd`命令的依赖复制技巧在特定的场合下非常有用,但它也需要细心的处理和充分的测试,以确保在新环境中的稳定运行。此外,这种做法虽然方便,但在长期维护和安全更新方面可能会带来额外的负担。
362 0
|
Ubuntu 安全 Linux
Windows——安装Ubuntu 18.04 LTS
Windows——安装Ubuntu 18.04 LTS
418 1
Windows——安装Ubuntu 18.04 LTS