Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _GNU_SOURCE
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sched.h>
- #include <errno.h>
- int zmienna_wspolna=0;
- #define WYMIAR 100
- #define ROZMIAR WYMIAR*WYMIAR
- double a[ROZMIAR],b[ROZMIAR],c[ROZMIAR];
- double czasozajmowacz(){
- int i, j, k;
- int n=WYMIAR;
- for(i=0;i<ROZMIAR;i++) a[i]=1.0*i;
- for(i=0;i<ROZMIAR;i++) b[i]=1.0*(ROZMIAR-i);
- for(i=0;i<n;i++){
- for(j=0;j<n;j++){
- c[i+n*j]=0.0;
- for(k=0;k<n;k++){
- c[i+n*j] += a[i+n*k]*b[k+n*j];
- }
- }
- }
- return(c[ROZMIAR-1]);
- }
- void * zadanie_watku (void * arg_wsk)
- {
- printf("\tWatek powstaje\n");
- int k;
- czasozajmowacz();
- printf("\tWatek umiera\n");
- return (NULL);
- }
- int main()
- {
- pthread_t tid1, tid2, tid3;
- pthread_attr_t attr1, attr2;
- void *wynik;
- int i,stat;
- //wielkosc stosu
- size_t stacksize = 1024;
- pthread_attr_init(&attr1);
- pthread_attr_setstacksize(&attr1, stacksize);
- pthread_create(&tid1, &attr1, zadanie_watku, NULL);
- printf("\tRozmiar stosu: %d\n", stacksize);
- pthread_join(tid1, NULL);
- sleep(1);
- //Przydzial procesora
- cpu_set_t cpu;
- pthread_create(&tid2, NULL, zadanie_watku, NULL);
- sleep(1);
- CPU_ZERO(&cpu);
- for (i = 0; i < 8; i++)
- CPU_SET(i, &cpu);
- pthread_setaffinity_np(tid2, sizeof(cpu_set_t), &cpu);
- for (i = 0; i < CPU_SETSIZE; i++)
- if (CPU_ISSET(i, &cpu))
- printf("\tProcesor %d\n", i);
- pthread_join(tid2, NULL);
- //Sterowanie priorytetem
- pthread_attr_init(&attr2);
- struct sched_param param;
- param.sched_priority = 3;
- pthread_attr_setinheritsched(&attr2, PTHREAD_EXPLICIT_SCHED);
- pthread_attr_setschedparam(&attr2, ¶m);
- printf("\tUstawiony priorytet: %d\n", param.sched_priority);
- pthread_create(&tid3, &attr2, zadanie_watku, NULL);
- pthread_join(tid3, NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement