Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. #include <pthread.h> //do obslugi watkow
  2. #include <stdio.h> //do obslugi plikow
  3. #include <unistd.h> //do usypiana watkow
  4.  
  5. pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
  6. char common[100];
  7. int isFinished = 0;
  8.  
  9. void* funkcjaWatku(void* arg) {
  10. //petla wypisujaca i przekazujaca do pliku zawartosc bufora
  11. while(1) {
  12. //pthread_mutex_lock(&lock);
  13. printf("%d: %s", (int)pthread_self(), common);
  14. fputs(common, arg);
  15. //pthread_mutex_unlock(&lock);
  16. usleep(300);
  17. //isFinished=isFinished+1;
  18. }
  19.  
  20. }
  21.  
  22. int main() {
  23. //blok programu pobierajacy nazwe pliku wejsciowego od uzytkownika
  24. printf("Podaj nazwę pliku: ");
  25. char inputName[100];
  26. scanf("%s", inputName);
  27. //blok programu otwierajacy plik wejsciowy, oraz pliki wyjsciowe
  28. FILE* input = fopen(inputName, "r");
  29. FILE* output1 = fopen("KAROL1", "w");
  30. FILE* output2 = fopen("KAROL2", "w");
  31. FILE* output3 = fopen("KAROL3", "w");
  32. //blok programu tworzacy watki typu detached
  33. pthread_t watek1;
  34. pthread_t watek2;
  35. pthread_t watek3;
  36. pthread_create(&watek1, NULL, funkcjaWatku, output1);
  37. pthread_create(&watek2, NULL, funkcjaWatku, output2);
  38. pthread_create(&watek3, NULL, funkcjaWatku, output3);
  39. pthread_detach(watek1);
  40. pthread_detach(watek2);
  41. pthread_detach(watek3);
  42. //petla zapisujaca plik wejsciowy do buforu
  43.  
  44. //pthread_mutex_lock(&lock);
  45. while(fgets(common, 100, input)) {
  46. //isFinished = 0;
  47. //printf("befor loop: %d\n", isFinished);
  48. //while(isFinished!=3);
  49. usleep(300);
  50. //printf("after loop: %d\n", isFinished);
  51. }
  52. //pthread_mutex_unlock(&lock);
  53. //zakonczenie programu
  54. pthread_mutex_destroy(&lock);
  55. fclose(output1);
  56. fclose(output2);
  57. fclose(output3);
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement