静态pthread spinlock初始化存在?

时间:2013-10-05 10:01:30

标签: c linux gcc pthreads

是否有用于pthread自旋锁的静态初始化程序?我查看了pthread.h,它似乎没有。

我正在寻找类似于PTHREAD_MUTEX_INITIALIZER的东西。

2 个答案:

答案 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控件结构似乎是互斥锁,条件锁和读写锁。