Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] [Unix] Algorytm piekarni - POMOCY!


Rekomendowane odpowiedzi

Opublikowano

Przy pomocy P-watkow zaimplementowac algorytm piekarni. Potrafilby ktos to zrobic?


Tutaj zamieszczam kod.

#define _REENTRANT
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

typedef struct str_thdata
{
	int stan;
} thdata;

thdata struktura;

void *watek (void *ptr);


int main ()
{

int licznik = 0;
pthread_t wat1, wat2, wat3, wat4;

int nwat1=1;
int nwat2=2;
int nwat3=3;
int nwat4=4;

pthread_create(&wat1, NULL, &watek, (void*)&nwat1);
pthread_create(&wat2, NULL, &watek, (void*)&nwat2);
pthread_create(&wat3, NULL, &watek, (void*)&nwat3);
pthread_create(&wat3, NULL, &watek, (void*)&nwat4);

pthread_join(wat1, NULL);
pthread_join(wat2, NULL);
pthread_join(wat3, NULL);
pthread_join(wat4, NULL);

printf("\n\n			Stan licznika globalnego: %d \n\n", struktura.stan);

return 0;
}

void* watek (void *ptr)
{
int *nr;
nr = (int *)ptr;
int i, licznik;
int a;
for(i=0; i<3; i++)
{
	sleep(1);
	licznik=0;
	printf("Watek nr %d. Sekcja prywatna.\n", *nr);
	licznik+=1;
		pthread_mutex_lock(&mutex);
		sleep(3);
		printf("\t\t\t\t\tWatek nr %d. Sekcja krytyczna.\n", *nr);
	struktura.stan+=licznik;
	pthread_mutex_unlock(&mutex);
}

printf("Watek nr %d konczy dzialanie.\n", *nr);
}

 

 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...