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