Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #define _GNU_SOURCE
  2.  
  3. #include <pthread.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. #include <sched.h>
  8. #include <errno.h>
  9.  
  10. int zmienna_wspolna=0;
  11.  
  12. #define WYMIAR 100
  13. #define ROZMIAR WYMIAR*WYMIAR
  14. double a[ROZMIAR],b[ROZMIAR],c[ROZMIAR];
  15.  
  16. double czasozajmowacz(){
  17. int i, j, k;
  18. int n=WYMIAR;
  19. for(i=0;i<ROZMIAR;i++) a[i]=1.0*i;
  20. for(i=0;i<ROZMIAR;i++) b[i]=1.0*(ROZMIAR-i);
  21. for(i=0;i<n;i++){
  22. for(j=0;j<n;j++){
  23. c[i+n*j]=0.0;
  24. for(k=0;k<n;k++){
  25. c[i+n*j] += a[i+n*k]*b[k+n*j];
  26. }
  27. }
  28. }
  29. return(c[ROZMIAR-1]);
  30. }
  31.  
  32. void * zadanie_watku (void * arg_wsk)
  33. {
  34.  
  35. printf("\tWatek powstaje\n");
  36. int k;
  37. czasozajmowacz();
  38. printf("\tWatek umiera\n");
  39.  
  40. return (NULL);
  41. }
  42.  
  43. int main()
  44. {
  45. pthread_t tid1, tid2, tid3;
  46. pthread_attr_t attr1, attr2;
  47. void *wynik;
  48. int i,stat;
  49.  
  50.  
  51.  
  52. //wielkosc stosu
  53. size_t stacksize = 1024;
  54.  
  55. pthread_attr_init(&attr1);
  56. pthread_attr_setstacksize(&attr1, stacksize);
  57. pthread_create(&tid1, &attr1, zadanie_watku, NULL);
  58. printf("\tRozmiar stosu: %d\n", stacksize);
  59. pthread_join(tid1, NULL);
  60. sleep(1);
  61.  
  62.  
  63.  
  64. //Przydzial procesora
  65.  
  66. cpu_set_t cpu;
  67. pthread_create(&tid2, NULL, zadanie_watku, NULL);
  68. sleep(1);
  69. CPU_ZERO(&cpu);
  70.  
  71. for (i = 0; i < 8; i++)
  72. CPU_SET(i, &cpu);
  73. pthread_setaffinity_np(tid2, sizeof(cpu_set_t), &cpu);
  74.  
  75. for (i = 0; i < CPU_SETSIZE; i++)
  76. if (CPU_ISSET(i, &cpu))
  77. printf("\tProcesor %d\n", i);
  78.  
  79. pthread_join(tid2, NULL);
  80.  
  81.  
  82. //Sterowanie priorytetem
  83. pthread_attr_init(&attr2);
  84. struct sched_param param;
  85. param.sched_priority = 3;
  86. pthread_attr_setinheritsched(&attr2, PTHREAD_EXPLICIT_SCHED);
  87. pthread_attr_setschedparam(&attr2, &param);
  88. printf("\tUstawiony priorytet: %d\n", param.sched_priority);
  89. pthread_create(&tid3, &attr2, zadanie_watku, NULL);
  90. pthread_join(tid3, NULL);
  91.  
  92.  
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement