Pagini recente » Cod sursa (job #1382976) | Cod sursa (job #711339) | Cod sursa (job #2597316) | Cod sursa (job #2713271) | Cod sursa (job #2072631)
#include <sys/types.h>
#include<string.h>
#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/mman.h>
#include<fcntl.h>
#include<sys/stat.h>
#define MAX_RESOURCES 10
pthread_mutex_t mtx;
int av_res=MAX_RESOURCES;
int decrease_count(int count)
{
if(av_res<count)
return -1;
else
{
pthread_mutex_lock(&mtx);
av_res-=count;
pthread_mutex_unlock(&mtx);
}
printf("Got %d resources, remaining %d\n ",count,av_res);
return 0;
}
int increase_count(int count)
{
pthread_mutex_lock(&mtx);
av_res+=count;
pthread_mutex_unlock(&mtx);
printf("Released %d resources, remaining %d\n ",count,av_res);
return 0;
}
void * functie(void *d)
{
int *count=(int*)d;
int countul=count[0];
while(decrease_count(countul)==-1)
sleep(1);
increase_count(countul);
return 0;
free(count);
return NULL;
}
int main()
{
int n;
printf("Introduceti numarul de threaduri: ");
scanf("%d",&n);
if(pthread_mutex_init(&mtx,NULL))
{
perror("MUTEX INIT");
return errno;
}
pthread_mutex_destroy(&mtx);
return 0;
}