您的当前位置:首页正文

Pthread 两种加锁方法区别

来源:图艺博知识网

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循环了。

Top