51CTO博客已为您找到关于PTHREAD_MUTEX_RECURSIVE_NP的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及PTHREAD_MUTEX_RECURSIVE_NP问答内容。更多PTHREAD_MUTEX_RECURSIVE_NP相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。 PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTHREAD_MUTEX_TIMED_NP类型动作相同。这样就保证当不允许多次加锁时不会...
2、 PTHREAD_MUTEX_RECURSIVE_NP: 支持递归的一种互斥锁, 该互斥量的内部维护有互斥锁的所有者和一个锁计数器。 当线程第一次取到互斥锁时, 会将锁计数器置1, 后续同一个线程再次执行加锁操作时, 会递增该锁计数器的值。 解锁则递减该锁计数器的值, 直到降至0, 才会真正释放该互斥量, 此时其他线程才能...
在多线程程序中首先定义pthread_mutex_t类型的锁变量,然后调用pthread_mutex_lock(&lock)加锁,调用pthread_mutex_unlock(&lock)解锁,pthread_mutex_t变量有四种属性: 1.PTHREAD_MUTEX_TIMED_NP,这是缺省值,也就是普通锁。首先进行一次CAS,如果失败则陷入内核态然后挂起线程 2.PTHREAD_MUTEX_RECURSIVE_NP,可重入锁,...
* PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。 * PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTHREAD_MUTEX_TIMED_NP类型动作相同。这样保证当不允许多次加锁时不...
在Linux上,对应的是PTHREAD_MUTEX_FAST_NP、PTHREAD_MUTEX_RECURSIVE_NP和PTHREAD_MUTEX_ERRORCHECKING_NP。NP表示Non-portable。 五、应用互斥量需要注意的几点 1、互斥量需要时间来加锁和解锁。锁住较少互斥量的程序通常运行得更快。所以,互斥量应该尽量少,够用即可,每个互斥量保护的区域应则尽量大。
PTHREAD_MUTEX_RECURSIVE_NP,嵌套锁,允许同一个线程对同一个锁成功获得多次,并通过多次unlock解锁。如果是不同线程请求,则在加锁线程解锁时重新竞争。 PTHREAD_MUTEX_ERRORCHECK_NP,检错锁,如果同一个线程请求同一个锁,则返回EDEADLK,否则与PTHREAD_MUTEX_TIMED_NP类型动作相同。这样就保证当不允许多次加锁时不会...
MUTEX_NONRECURSIVE_NP表示缺省非递归 POSIX 兼容互斥对象。 注意: pthread.h头文件必须是使用线程库的每个源文件的第一个包含文件。 否则,应使用-D_THREAD_SAFE编译标志或使用 cc_r 编译器。 在这种情况下,会自动设置标志。 pthread_mutexattr_getkind_np子例程不可移植。
PTHREAD_MUTEX_RECURSIVE_NP:允许同一线程对同一锁成功获得多次(递归锁)。当然也要解锁多次。其余线程在解锁时重新竞争。 PTHREAD_MUTEX_ERRORCHECK_NP:若同一线程请求同一锁,返回EDEADLK(进行死锁检测,返回死锁的错误,避免死锁),否则与PTHREAD_MUTEX_TIMED_NP动作相同(直接死锁)。
PTHREAD_MUTEX_RECURSIVE 如果一个线程对这种类型的互斥锁重复上锁,不会引起死锁,一个线程对这类互斥锁的多次重复上锁必须由这个线程来重复相同数量的解锁,这样才能解开这个互斥锁,别的线程才能得到这个互斥锁。如果试图解锁一个由别的线程锁定的互斥锁将会返回一个错误代码。如果一个线程试图解锁已经被解锁的互斥锁也将...