/* * Copyright (c) 2002, Intel Corporation. All rights reserved. * Created by: bing.wei.liu REMOVE-THIS AT intel DOT com * This file is licensed under the GPL license. For the full content * of this license, see the COPYING file at the top level of this * source tree. * Test that pthread_mutex_lock() * shall lock the mutex object referenced by 'mutex'. If the mutex is * already locked, the calling thread shall block until the mutex becomes * available. This operation shall return with the mutex object referenced * by 'mutex' in the locked state with the calling thread as its owner. * Steps: * -- Initialize a mutex to protect a global variable 'value' * -- Create N threads. Each is looped M times to acquire the mutex, * increase the value, and then release the mutex. * -- Check if the value has increased properly (M*N); a broken mutex * implementation may cause lost augments. * */ #define _XOPEN_SOURCE 600 #include #include #include #include "posixtest.h" #define THREAD_NUM 5 #define LOOPS 4 void *f1(void *parm); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int value; /* value protected by mutex */ int main() { int i, rc; pthread_attr_t pta; pthread_t threads[THREAD_NUM]; //pthread_t self = pthread_self(); pthread_attr_init(&pta); pthread_attr_setdetachstate(&pta, PTHREAD_CREATE_JOINABLE); /* Create threads */ fprintf(stderr,"Creating %d threads\n", THREAD_NUM); for (i=0; i