对鸿蒙轻内核互斥锁的封装 更多...
函数 | |
int | pthread_mutexattr_init (pthread_mutexattr_t *attr) |
初始化互斥锁属性 更多... | |
int | pthread_mutexattr_destroy (pthread_mutexattr_t *attr) |
int | pthread_mutexattr_setprotocol (pthread_mutexattr_t *attr, int protocol) |
int | pthread_mutexattr_getprotocol (const pthread_mutexattr_t *attr, int *protocol) |
int | pthread_mutexattr_setprioceiling (pthread_mutexattr_t *attr, int prioceiling) |
int | pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *attr, int *prioceiling) |
int | pthread_mutex_setprioceiling (pthread_mutex_t *mutex, int prioceiling, int *oldPrioceiling) |
int | pthread_mutex_getprioceiling (const pthread_mutex_t *mutex, int *prioceiling) |
int | pthread_mutexattr_gettype (const pthread_mutexattr_t *attr, int *outType) |
int | pthread_mutexattr_settype (pthread_mutexattr_t *attr, int type) |
int | pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexAttr) |
初始化互斥锁。 如果 mutexAttr 为 NULL,则使用默认属性。 更多... | |
int | pthread_mutex_destroy (pthread_mutex_t *mutex) |
销毁互斥锁 更多... | |
int | pthread_mutex_lock (pthread_mutex_t *mutex) |
互斥锁加锁操作 更多... | |
int | pthread_mutex_trylock (pthread_mutex_t *mutex) |
互斥锁尝试加锁操作 更多... | |
int | pthread_mutex_unlock (pthread_mutex_t *mutex) |
解锁互斥锁 更多... | |
对鸿蒙轻内核互斥锁的封装
当 pthread_mutex_lock() 返回时,该互斥锁已被锁定。调用线程是该互斥锁的属主。 如果该互斥锁已被另一个线程锁定和拥有,则调用线程将阻塞,直到该互斥锁变为可用为止。 如果互斥锁类型为 PTHREAD_MUTEX_NORMAL,则不提供死锁检测。尝试重新锁定互斥锁会导致死锁。 如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或未锁定,则将产生不确定的行为。 如果互斥锁类型为 PTHREAD_MUTEX_ERRORCHECK,则会提供错误检查。如果某个线程尝试重新锁定的互斥锁已经由该线程锁定, 则将返回错误。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或者未锁定,则将返回错误。 如果互斥锁类型为 PTHREAD_MUTEX_RECURSIVE,则该互斥锁会保留锁定计数这一概念。线程首次成功获取互斥锁时, 锁定计数会设置为 1。线程每重新锁定该互斥锁一次,锁定计数就增加 1。线程每解除锁定该互斥锁一次,锁定计数就减小 1。 锁定计数达到 0 时,该互斥锁即可供其他线程获取。如果某个线程尝试解除锁定的互斥锁不是由该线程锁定或者未锁定,则将返回错误。 如果互斥锁类型是 PTHREAD_MUTEX_DEFAULT,则尝试以递归方式锁定该互斥锁将产生不确定的行为。 对于不是由调用线程锁定的互斥锁,如果尝试解除对它的锁定,则会产生不确定的行为。如果尝试解除锁定尚未锁定的互斥锁, 则会产生不确定的行为。 参考链接: https://docs.oracle.com/cd/E19253-01/819-7051/sync-12/index.html *
在文件 pthread_mutex.c 中定义.
int pthread_mutex_destroy | ( | pthread_mutex_t * | mutex | ) |
在文件 pthread_mutex.c 第 113 行定义.
int pthread_mutex_init | ( | pthread_mutex_t * | mutex, |
const pthread_mutexattr_t * | mutexAttr | ||
) |
初始化互斥锁。 如果 mutexAttr 为 NULL,则使用默认属性。
mutex | |
mutexAttr |
在文件 pthread_mutex.c 第 134 行定义.
int pthread_mutex_lock | ( | pthread_mutex_t * | mutex | ) |
互斥锁加锁操作
在文件 pthread_mutex.c 第 157 行定义.
在文件 pthread_mutex.c 第 108 行定义.
int pthread_mutex_trylock | ( | pthread_mutex_t * | mutex | ) |
互斥锁尝试加锁操作
在文件 pthread_mutex.c 第 162 行定义.
int pthread_mutex_unlock | ( | pthread_mutex_t * | mutex | ) |
int pthread_mutexattr_destroy | ( | pthread_mutexattr_t * | attr | ) |
在文件 pthread_mutex.c 第 83 行定义.
在文件 pthread_mutex.c 第 103 行定义.
在文件 pthread_mutex.c 第 93 行定义.
在文件 pthread_mutex.c 第 118 行定义.
int pthread_mutexattr_init | ( | pthread_mutexattr_t * | attr | ) |
初始化互斥锁属性
attr |
当其他线程正在使用某个互斥锁时,请勿重新初始化或销毁该互斥锁。如果任一操作没有正确完成,将会导致程序失败。如果要重新初始化或销毁某个互斥锁,则应用程序必须确保当前未使用该互斥锁。
在文件 pthread_mutex.c 第 65 行定义.
在文件 pthread_mutex.c 第 98 行定义.
在文件 pthread_mutex.c 第 88 行定义.
在文件 pthread_mutex.c 第 123 行定义.