pth_rwlock.c revision e739ac0589b4fb43561f801c4faba8c1b89f8680
1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _XOPEN_SOURCE 600 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include <pthread.h> 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdio.h> 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <stdlib.h> 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <string.h> 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LOCKS 2000 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruint main(int argc, char **argv) 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru pthread_rwlock_t locks[LOCKS]; 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int n; 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int e; 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for (n = 0; n < LOCKS; n++) { 1754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if ((e = pthread_rwlock_init(locks + n, NULL)) != 0) { 1854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius fprintf(stderr, "pthread_rwlock_init[%d]: %s\n", n, strerror(e)); 1954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius exit(1); 2054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru for (n = 0; n < LOCKS; n++) { 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if ((e = pthread_rwlock_destroy(locks + n)) != 0) { 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru fprintf(stderr, "pthread_rwlock_destroy[%d]: %s\n", n, strerror(e)); 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru exit(1); 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru exit(0); 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru