4

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

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

4

2 回答 2

5

您可以使用构造函数和析构函数(在 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 );
    }
}
于 2014-07-12T11:47:31.593 回答
2

不,定义静态初始化程序的唯一 POSIX 控制结构似乎是互斥锁、条件和读写锁。

于 2013-10-05T21:32:42.000 回答