Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <pthread.h>
- #include <stdlib.h>
- #include <unistd.h>
- int odp1=0;
- void *thread_function(void *arg) {
- //int i=0;
- //for (i=0;i<4;i++){
- //printf ("%d\n",tablica[cnt]);
- int* tablica = (int*)arg;
- printf("pierwszy wezel: %d running.\n", tablica[0]);
- sleep(1+1);
- odp1 = tablica[0]*tablica[0];
- printf ("odp1 to %d\n",odp1);
- int odp2 = tablica[1]*tablica[1];
- printf ("odp2 to %d\n",odp2);
- odp1 = odp1+odp2;
- printf("wezel: %d done.\n", tablica[0]);
- printf("wynik to %d\n",odp1);
- pthread_exit(&odp1);
- return NULL;
- }
- int main(int argc, char **argv)
- {
- int i;
- for (i=0;i<(argc-1);i++)
- {
- if (atoi(argv[i+1])==0)
- {
- printf("Podaj wartosci liczbowe\n");
- return 1;
- }
- }
- printf("argc = %d\n", argc);
- int tablica[argc];
- for (i = 0; i < argc-1; i++)
- {
- tablica[i]=atoi(argv[i+1]);
- printf("tablica[%d] = %d\n", i, tablica[i]);
- }
- int argumenty=argc-1;
- printf ("ilosc argumentow= %d\n",argumenty);
- if (argumenty%2==1){
- argumenty=(argumenty+1)/2;
- printf("liczba watkow = %d\n",argumenty);}
- else {
- argumenty=argumenty/2;
- printf("liczba watkow = %d\n",argumenty);}
- int COUNT=argumenty;
- int err;
- int cnt;
- pthread_t p_thread[COUNT];
- int *odp[2];
- for(cnt = 0,i = 0; cnt < COUNT, i < COUNT; cnt++,i+2){
- err = pthread_create(&p_thread[cnt], NULL, &thread_function, &tablica[i]);
- if(err != 0)
- fprintf(stderr, "Error creating the thread");
- }
- for(cnt = 0; cnt < COUNT; cnt++) {
- pthread_join(p_thread[cnt], (void **)&(odp[cnt]));
- }
- //fprintf(stdout, "All threads completed.\n First thread returned %d.\n Second thread returned %d.\n", *odp[0], *odp[1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement