Cod sursa(job #2072631)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 21 noiembrie 2017 23:39:16
Problema A+B Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}