/******************************************************************************/ /** @file "Pthreads/C/Primer 2 - stack/stack_size.c" @brief Primer manipulacije atributima niti Primer koji demonstrira upotrebu PThreads API funkcija za manipulaciju atributima niti, konkretno dohvatanje i promenu veličine steka niti. Autor ovog primera je Blaise Barney. Kod je preuzet iz Pthreads tutorijala sa adrese http://www.llnl.gov/computing/tutorials/pthreads/ i prilagodjen potrebama ovog kursa. */ /******************************************************************************/ #include #include #include /******************************************************************************/ /** @def N_THREADS @brief Broj niti koje treba kreirati */ #define N_THREADS 4 /** @def N @brief Multiplikativna konstanta */ #define N 1000 /** @def MEG_EXTRA @brief Aditivna konstanta */ #define MEG_EXTRA 1000000 /******************************************************************************/ /** @var attr @brief Struktura koja definiše atribute niti */ pthread_attr_t attr; /******************************************************************************/ /** @brief Posao koji treba da izvrši svaka od niti @param thread_id Pokazivač na ID broj niti @return void* Rezultat izvršavanja funkcije pthread_exit Koristan posao koji svaka od niti treba da odradi je da dohvati veličinu svog steka i da ispiše poruku na standardnom izlazu. Ostatak posla čini popunjavanje matrice @ref N x @ref N , koja ničemu ne služi. */ void* do_work(void* thread_id) { size_t my_stack_size; int i, j; double A[N][N]; // Dohvata velicinu steka niti. pthread_attr_getstacksize (&attr, &my_stack_size); printf("Thread %d: stack size = %d bytes \n", thread_id, my_stack_size); for (i=0; i