pthread_spin_lock 或 pthread_spin_trylock 子例程

用途

锁定旋转锁定对象。

语法

#include <pthread.h>

int pthread_spin_lock(pthread_spinlock_t *lock); 
int pthread_spin_trylock(pthread_spinlock_t *lock);

描述

pthread_spin_lock 子例程锁定 lock 参数引用的自旋锁。 如果另一个线程未持有该锁,那么调用线程将获取该锁。 否则,线程自旋 (即,不会从 pthread_spin_lock 调用返回) ,直到锁定变为可用为止。 如果调用线程在进行调用时持有锁定,那么结果将未定义。 pthread_spin_trylock 子例程锁定由 lock 参数引用的自旋锁 (如果它未被任何线程挂起)。 否则,该函数将失败。

如果使用未初始化的自旋锁调用这些子例程中的任何子例程,那么结果未定义。

返回值

成功完成后,这些函数将返回零; 否则,将返回错误号以指示错误。

错误代码

描述
EINVAL lock 参数指定的值不引用已初始化的自旋锁对象。
pthread_spin_lock 子例程在下列情况下失败:
描述
EDEADLK 调用线程已持有锁定。
pthread_spin_trylock 子例程在下列情况下失败:
描述
EBUSY 线程当前持有该锁定。