进程,线程之间,使用锁互斥。如果某一方加锁后,莫名其妙的退出,崩溃了;然后呢,另外一方就傻眼了,加锁加不上,卡死。
所以,可以考虑使用超时加锁办法:
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
理想是美好的,试了之后发现,只要进程死了,再次启动双方就会卡死。原因未知,以后有机会再深入检查。目前解决办法就是主进程起来,先杀辅进程,然后再次启动。