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 | 线程当前持有该锁定。 |