pthread_muext_trylock(&t)让你在没有获得锁的时候,还有机会退出,而pthread_mutex_lock(&t)会一直等下去。
假设你写了一个程序,当按下Ctrl+c后,你希望程序捕获到Ctrl+c后可以退出,但如果你的程序阻塞在了pthread_mutet_lock,那么程序就再也退不出来了,这时你可以这样写程序:
signal(SIGHUP, signal_func);
signal(SIGQUIT, signal_func);
...
...
while(pthread_mutex_trylock(&t) && (!g_bExit))
{
usleep(1000);
}
void signal_func(int no)
{
switch (no)
{
case SIGINT:
g_bExit = 1;
break;
case SIGTERM:
g_bExit = 1;
break;
default:
break;
break;
}
}
按下Ctrl+C后,把全局变量g_bExit设置为1了,然后程序在while循环中检查到g_bExit为真后,就可以退出while循环了。