sprawko7


WOJSKOWA AKADEMIA TECHNICZNA

LABORATORIUM

SYSTEMÓW OPERACYJNYCH

Laboratorium nr 7

Grupa

I9X2S1

Lp.

Nazwisko i Imię

Data wykonania ćwiczenia

31.03.2011

1.

Bereźnicka Urszula

Prowadzący ćwiczenie

dr inż.

Zbigniew Zieliński

Ocena sprawozdania

  1. Treść zadania.

Napisać wielowątkowy program przyjmujący tylko parzystą liczbę argumentów, w przypadku nieparzystej ilości argumentów wyświetla komunikat „Błędna ilość argumentów”. Program ma wyliczać sumę argumentów podniesionych do kwadratu.

  1. Kod programu.

#include <pthread.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#define MAX 30

struct dane{

int a;

int b;

};

struct dane arg[MAX];

int zlicz(char *n, char **s){

char *c;

int i=0;

c=strtok(n," ");

while(c!=NULL && i<(MAX-1)){

s[i]=c;

c=strtok(NULL," ");

i++;

}

s[i]=NULL;

return i;

}

int oblicz(void* argg){

int a, b, tmp1, tmp2;

struct dane *x;

x = (struct dane *) argg;

a = x->a;

b = x->b;

tmp1 = (a*a);

tmp2 = (b*b);

printf("\nWatek o id %d: %d^2 + %d^2 = %d.\n", (int)pthread_self(), a, b, (tmp1+tmp2));

return (tmp1+tmp2);

}

int main(int argc, char **argv){

char watek[50];

char *w[MAX];

int i, j, tmp1, tmp2, l1, l2, suma;

while(1){

write(1,"progr>",7);

i=read(0, watek, 50-1);

if(i==0)

break;

watek[i]=0;

if(watek[i-1]=='\n')

watek[i-1]=0;

j=zlicz(watek, w);

if(strcmp(w[0],"exit")==0){

return 0;

}

if(j>=1){

if((j%2)==0){

suma=0;

int *argumenty = calloc((j/2),sizeof(int));

pthread_t t[j];

for(l1=0,l2=0;l1<(j/2);l1++,l2+=2){

arg[l1].a = atoi(w[l2]);

arg[l1].b = atoi(w[l2+1]);

pthread_create(&t[l1],NULL,(void*)oblicz,&arg[l1]);

}

for(l1=0;l1<(j/2);l1++){

pthread_join(t[l1],(void*)&argumenty[l1]);

suma+=argumenty[l1];

}

printf("\n\nSuma wynosi: %d\n\n", suma);

}

else

printf("Podano nieparzysta liczbe argumentow!\n");

}

}

return 0;

}

  1. Podsumowanie.

Zgodnie z założeniami program przekazuje do funkcji tworzącej dany wątek po 2 argumenty. Każdy z argumentów jest podnoszony do kwadratu, a następnie oba są sumowane i przekazywane na zewnątrz funkcji obliczającej.

pthread_create(&t[l1], NULL, (void*)oblicz,&arg[l1]);

pthread_self();

Funkcja ta zwraca identyfikator wątku, który ją wywołał.

pthread_join(t[l1],(void *)&argumenty[l1]);

Wątek, który wywołuje tę funkcję zostaje wstyrzymany do chwili, gdy wskazany wątek zakończy działanie, wtedy wątek, który oczekiwał będzie kontynuowany. Pthread_join przekazuje wartość wynikową zwróconą przez wątek.



Wyszukiwarka

Podobne podstrony:
El sprawko 5 id 157337 Nieznany
LabMN1 sprawko
Obrobka cieplna laborka sprawko
Ściskanie sprawko 05 12 2014
1 Sprawko, Raport wytrzymałość 1b stal sila
stale, Elektrotechnika, dc pobierane, Podstawy Nauk o materialach, Przydatne, Sprawka
2LAB, 1 STUDIA - Informatyka Politechnika Koszalińska, Labki, Fizyka, sprawka od Mateusza, Fizyka -
10.6 poprawione, semestr 4, chemia fizyczna, sprawka laborki, 10.6
PIII - teoria, Studia, SiMR, II ROK, III semestr, Elektrotechnika i Elektronika II, Elektra, Elektro
grunty sprawko, Studia, Sem 4, Semestr 4 RŁ, gleba, sprawka i inne
SPRAWKO STANY NIEUSTALONE, Elektrotechnika, Elektrotechnika
SPRAWOZDANIE Z farmako, Farmacja, II rok farmacji, I semstr, fizyczna, Fizyczna, Sprawozdania z fizy
mmgg, Studia PŁ, Ochrona Środowiska, Chemia, fizyczna, laborki, wszy, chemia fizyczna cz II sprawka
Zadanie koncowe, Studia PŁ, Ochrona Środowiska, Biochemia, laborki, sprawka
Piperyna sprawko PŁ, chemia produktów naturalnych, ćw. 5 PIPERYNA
03 - Pomiar twardości sposobem Brinella, MiBM Politechnika Poznanska, IV semestr, labolatorium wydym
Sprawozdanie nr 1 CECHY TECHNICZNE MATERIAfLOW BUDOWLANYCH, Budownictwo studia pł, sprawka maater
Sprawko badanie twardosci, Studia, WIP PW, I rok, MATERIAŁY METALOWE I CERAMICZNE, SPRAWOZDANIA
sprawko z ćwiczenia 11, Farmacja, II rok farmacji, I semstr, fizyczna, Fizyczna, Sprawozdania z fizy

więcej podobnych podstron