您当前的位置: 首页 > 

使用超时加锁:pthread_mutex_timedlock

柳鲲鹏 发布时间:2019-03-19 13:06:29 ,浏览量:0

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

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

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

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

 

关注
打赏
1688896170
查看更多评论

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0431s