互斥锁

来源:互联网 发布:无主之地2 for mac 编辑:程序博客网 时间:2024/04/27 22:41

pthread_mutex_trylock

目录

  • 头文件
  • 函数体
      展开
    1. 头文件
    2. 函数体
        展开
      1. 非阻塞的锁定互斥锁pthread_mutex_trylock

        头文件

        #include <pthread.h>

        函数体

        int pthread_mutex_trylock( pthread_mutex_t *mutex );
        返回值
        函数成功返回0。任何其他返回值都表示错误。
        函数是pthread_mutex_lock函数的非阻塞版本。如果mutex参数所指定的互斥锁已经被锁定
        的话,调用pthread_mutex_trylock函数不会阻塞当前线程,而是立即返回一个值来描述互
        斥锁的状况。
        else
        {//printf("fun111 mut1 %d pth :: %u\n", (int)str, s);
        pthread_mutex_unlock(&mut1);
        usleep(1000);
        }
        pthread_mutex_trylock()调用在参数mutex指定的mutex对象当前被锁住的时候立即返回,除此之外,pthread_mutex_trylock()跟pthread_mutex_lock()功能完全一样。
        pthread_mutex_trylock() 在成功获得了一个mutex的锁后返回0,否则返回一个错误提示码错误.
        pthread_mutex_trylock() 函数在一下情况会失败:
        [EBUSY] The mutex could not be acquired because it was already locked. mutex已经被锁住的时候无法再获取锁
        The pthread_mutex_lock(), pthread_mutex_trylock() and pthread_mutex_unlock() functions may fail if:
        [EINVAL] mutex指向的mutex未被初始化
        [EAGAIN] Mutex的lock count(锁数量)已经超过 递归索的最大值,无法再获得该mutex
        原创粉丝点击