You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1002 B
43 lines
1002 B
6 years ago
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <pthread.h>
|
||
|
|
||
|
void *functionC();
|
||
|
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
|
||
|
int counter = 0;
|
||
|
|
||
|
main()
|
||
|
{
|
||
|
int rc1, rc2;
|
||
|
pthread_t thread1, thread2;
|
||
|
|
||
|
/* Create independent threads each of which will execute functionC */
|
||
|
|
||
|
if( (rc1=pthread_create( &thread1, NULL, &functionC, NULL)) )
|
||
|
{
|
||
|
printf("Thread creation failed: %d\n", rc1);
|
||
|
}
|
||
|
|
||
|
if( (rc2=pthread_create( &thread2, NULL, &functionC, NULL)) )
|
||
|
{
|
||
|
printf("Thread creation failed: %d\n", rc2);
|
||
|
}
|
||
|
|
||
|
/* Wait till threads are complete before main continues. Unless we */
|
||
|
/* wait we run the risk of executing an exit which will terminate */
|
||
|
/* the process and all threads before the threads have completed. */
|
||
|
|
||
|
pthread_join( thread1, NULL);
|
||
|
pthread_join( thread2, NULL);
|
||
|
|
||
|
exit(EXIT_SUCCESS);
|
||
|
}
|
||
|
|
||
|
void *functionC()
|
||
|
{
|
||
|
pthread_mutex_lock( &mutex1 );
|
||
|
counter++;
|
||
|
printf("Counter value: %d\n",counter);
|
||
|
pthread_mutex_unlock( &mutex1 );
|
||
|
}
|