Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- pthread_mutex_t mutexKakao = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t mutexMleko = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t mutexCzekolada = PTHREAD_MUTEX_INITIALIZER;
- int kakao =0;
- int mleko =0;
- int czekolada =0;
- void * producentKakao()
- {
- while(1)
- {
- pthread_mutex_lock(&mutexKakao);
- ++kakao;
- pthread_mutex_unlock(&mutexKakao);
- printf("Kakao!");
- usleep(300);
- }
- }
- void * producentMleka()
- {
- while(1)
- {
- pthread_mutex_lock(&mutexMleko);
- ++mleko;
- pthread_mutex_unlock(&mutexMleko);
- printf("Mleko!");
- usleep(300);
- }
- }
- void * konsumentCzekolady()
- {
- while(1)
- {
- pthread_mutex_lock(&mutexKakao);
- --kakao;
- pthread_mutex_unlock(&mutexKakao);
- pthread_mutex_lock(&mutexMleko);
- --mleko;
- pthread_mutex_unlock(&mutexMleko);
- if((kakao>10)&&(mleko>10))
- {
- ++czekolada;
- usleep(400);
- }
- else
- {
- ++czekolada;
- usleep(800);
- }
- printf("Czekolada!");
- }
- }
- int main()
- {
- pthread_t prodMlek, prodKak, konsum1, konsum2;
- pthread_create(&prodMlek, NULL, producentMleka, NULL);
- sleep(1);
- pthread_create(&prodKak, NULL, producentKakao, NULL);
- sleep(1);
- pthread_create(&konsum1, NULL, konsumentCzekolady, NULL);
- pthread_join(prodMlek, NULL);
- pthread_join(prodKak, NULL);
- pthread_join(konsum1, NULL);
- pthread_exit (NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement