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

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


目录
相关文章
|
3月前
|
存储 安全 算法
Wound/Wait死锁安全的互斥锁设计 【ChatgGPT】
Wound/Wait死锁安全的互斥锁设计 【ChatgGPT】
|
5月前
|
Python
Mutex
【7月更文挑战第2天】
28 2
|
Linux 编译器 C语言
互斥锁mutex
互斥锁mutex
96 0
pthread_mutex_unlock()出错
pthread_mutex_unlock()出错
156 0
Pthread线程使用详解
文中先讲解函数,再运行实例,以及一些注意事项
254 0
|
Linux API
pthread_mutex_init & 互斥锁pthread_mutex_t的使用
pthread_mutex_init l         头文件: #include l         函数原型: int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; l         函数作用: 该函数用于C函数的多线程编程中,互斥锁的初始化。
1952 0
|
C++
【C++ 语言】pthread_mutex_t 互斥锁
【C++ 语言】pthread_mutex_t 互斥锁
294 0
使用超时加锁:pthread_mutex_timedlock
使用超时加锁:pthread_mutex_timedlock
613 0