是否有一个用于pthread旋转锁的静态初始化器? 我看着pthread.h,似乎没有一个。
我正在寻找类似于PTHREAD_MUTEX_INITIALIZER的东西。
不,唯一定义了静态初始化器的POSIX控制结构似乎是互斥,条件和读写锁定。
你可以使用构造函数和析构函数(在gcc和clang中可用)
#include <pthread.h> #include <stdlib.h> static pthread_spinlock_t lock; __attribute__((constructor)) void lock_constructor () { if ( pthread_spin_init ( &lock, 0 ) != 0 ) { exit ( 1 ); } } int main () { if ( pthread_spin_lock ( &lock ) != 0 || pthread_spin_unlock ( &lock ) != 0 ) { return 2; } return 0; } __attribute__((destructor)) void lock_destructor () { if ( pthread_spin_destroy ( &lock ) != 0 ) { exit ( 3 ); } }