Matt23

Mutexes zad 2

May 24th, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.25 KB | None | 0 0
  1. #define _BSD_SOURCE
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <pthread.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8.  
  9. void *printString(void *ptr);
  10.  
  11. pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
  12.  
  13. int main() {
  14.     pthread_t thread1, thread2;
  15.     int iret1;
  16.  
  17.     iret1 = pthread_create( &thread1, NULL, printString, "HELLO WORLD ");
  18.     if(iret1) {
  19.         fprintf(stderr,"Error - pthread_create() return code: %d\n",iret1);
  20.         exit(EXIT_FAILURE);
  21.     }
  22.  
  23.     iret1 = pthread_create( &thread2, NULL, printString, "ala ma kota ");
  24.     if(iret1) {
  25.         fprintf(stderr,"Error - pthread_create() return code: %d\n",iret1);
  26.         exit(EXIT_FAILURE);
  27.     }
  28.  
  29.     pthread_join( thread1, NULL);
  30.     pthread_join( thread2, NULL);
  31.  
  32.     exit(0);
  33. }
  34.  
  35. // "drukarka" drukujaca na ekran po jednym znaku
  36. void screenPrinter(char c) {
  37.     printf("%c\n",c);
  38.     // drukarka drukuje 4 znaki/s
  39.     usleep(250 * 1000);
  40. }
  41.  
  42.  
  43. void *printString( void *ptr ) {
  44.     char *message;
  45.     message = (char *) ptr;
  46.     int len = strlen(message);
  47.     int i = 0;
  48.  
  49.     // drukowanie wiadomosci znak po znaku
  50.     pthread_mutex_lock(&mutex1);
  51.     for(i=0; i<len; i++){
  52.         screenPrinter(message[i]);
  53.     }
  54.     pthread_mutex_unlock(&mutex1);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment