Advertisement
kofii12345

pthread - sumowanie od 0 do 2012

Mar 24th, 2013
47
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <pthread.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. using namespace std;
  9.  
  10. int suma;
  11. const int NUM_OF_THREADS = 7;
  12.  
  13. pthread_mutex_t myMutex = PTHREAD_MUTEX_INITIALIZER;
  14. pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
  15.  
  16. void* sumuj(void* arg)
  17. {
  18. pthread_mutex_lock(&myMutex);
  19. int* przedzial = (int*)arg;
  20. //cout<<przedzial[0]<<endl<<przedzial[1]<<endl<<endl;
  21. for(int i=przedzial[0]; i <przedzial[1]; i++)
  22. {
  23. suma = suma + i;
  24. }
  25. pthread_mutex_unlock(&myMutex);
  26.  
  27. return arg;
  28. }
  29.  
  30. void rownolegle()
  31. {
  32. pthread_t threads[NUM_OF_THREADS];
  33. int ids[NUM_OF_THREADS];
  34. int przedzial[NUM_OF_THREADS+1];
  35.  
  36. for(int i = 0; i<NUM_OF_THREADS; i++)
  37. {
  38. przedzial[i] = i*(2012/NUM_OF_THREADS);
  39. }
  40. przedzial[NUM_OF_THREADS] = 2012;
  41.  
  42. for(int i = 0; i<NUM_OF_THREADS; i++)
  43. {
  44. ids[i] = pthread_create(&threads[i], NULL, sumuj, (void*)&przedzial[i]);
  45. }
  46.  
  47. for(int i = 0; i<NUM_OF_THREADS; i++)
  48. {
  49. ids[i] = pthread_join(threads[i], NULL);
  50. }
  51.  
  52. cout<<"ROWNOLEGLE - \tsuma:\t"<<suma<<endl;
  53. }
  54.  
  55. void nieRownolegle()
  56. {
  57. suma = 0;
  58. for(int i=0; i <2012; i++)
  59. {
  60. suma = suma + i;
  61. }
  62. cout<<"NIEROWNOLEGLE -\tsuma:\t"<<suma<<endl;
  63. }
  64.  
  65. int main()
  66. {
  67. rownolegle();
  68.  
  69. nieRownolegle();
  70.  
  71. system("pause");
  72. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement