是否有用于 pthread 自旋锁的静态初始化程序?我查看了 pthread.h,但似乎没有。
我正在寻找类似于 PTHREAD_MUTEX_INITIALIZER 的东西。
您可以使用构造函数和析构函数(在 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 );
}
}
不,定义静态初始化程序的唯一 POSIX 控制结构似乎是互斥锁、条件和读写锁。