watki



#define REENTRANT
#include
#include
#include
#include
#include
#include

int suma1,suma2,suma;
int odlacz_watek1,odlacz_watek2;
int tab[2][10];
int kod_powrotu1,kod_powrotu2;

void *sumuj1();
void *sumuj2();

int main()
{
int i,j;

printf("Glowny watek: getpid = %d gettid = %lu\n\n", getpid(), pthread_self());

pthread_t watek1,watek2;

srand(time(NULL));
for(i = 0; i < 2; i++)
for(j = 0; j < 10; j++)
tab[i][j] = rand() % 30;

if(pthread_create( &watek1, NULL, sumuj1, NULL ))
printf("Watek nie mogl zostac utworzony");
if(pthread_create( &watek2, NULL, sumuj2, NULL ))
printf("Watek nie mogl zostac utworzony");

if( !pthread_equal( pthread_self(), watek1 ))
pthread_join( watek1,(void*) &kod_powrotu1 );

if( !pthread_equal( pthread_self(), watek2 ))
pthread_join( watek2,(void*) &kod_powrotu2 );

suma = suma1+suma2;

printf("Suma wszystkich elementow tablicy tab: %d\n", suma);

printf("Kod powrotu 1: %d\n",kod_powrotu1);
printf("Kod powrotu 2: %d\n",kod_powrotu2);

odlacz_watek1 = pthread_detach( watek1 );

if(odlacz_watek1 == -1) printf("PORAZKA\n");

odlacz_watek2=pthread_detach( watek2 );
if(odlacz_watek2 == -1) printf("PORAZKA\n");

return 0;
}

void *sumuj1()
{
int i;
for(i = 0; i < 10; i++)
suma1 += tab[0][i];
printf("Suma pierwszego wiersza wynosi: %d\n", suma1);
printf("Watek 1: getpid = %d gettid = %lu\n\n", getpid(), pthread_self());
pthread_exit((void*)0);
}

void *sumuj2()
{
int i;
for(i = 0; i < 10; i++)
suma2 += tab[1][i];
printf("Suma drugiego wiersza wynosi: %d\n", suma2);
printf("Watek 2: getpid = %d gettid = %lu\n\n", getpid(), pthread_self());
pthread_exit((void*)0);
}


//detachstate pthread_create_joinable
//pthread_exit((void*)1);




Wyszukiwarka

Podobne podstrony:
wątki ceglane pśin
SO 05 Watki
watki
opis watki (2)
Wątki mitologiczne w sztuce nowożytnej
opis watki
watki
Java watki
sołtys,systemy operacyjne, wątki
wyk watki mutexy
watki 2
wątki
Wątki
Wątki
watki

więcej podobnych podstron