Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #pragma argsused
- struct dane_dla_watku
- {
- //char nazwa[50];
- int p;
- int k;
- int *tab;
- };
- // priorytety wątków
- //int priorytety[3] = { THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_NORMAL, THREAD_PRIORITY_ABOVE_NORMAL};
- HANDLE watki[200]; // dojścia (uchwyty) wątków
- void merge(int pierwszy_watek, int drugi_watek)
- {
- }
- // deklaracja funkcji wątku
- DWORD WINAPI funkcja_watku( void *argumenty );
- //---------------------------------------------------------------------------
- int main(int argc, char **argv)
- {
- int i;
- int ilosc_elementow = 200;
- int tab[200];
- DWORD id; // identyfikator wątku
- //clrscr();
- printf( "Uruchomienie programu\n" );
- // tworzenie wątków
- for(i=0; i<200; i++)
- {
- tab[i]=rand()%1000;
- }
- dane_dla_watku dane = {0, 199, tab};
- watki[0] = CreateThread(
- NULL, // atrybuty bezpieczeństwa
- 0, // inicjalna wielkość stosu
- funkcja_watku, // funkcja wątku
- (void *)&dane,// dane dla funkcji wątku
- 0, // flagi utworzenia
- &id );
- if( watki[0] != INVALID_HANDLE_VALUE )
- {
- printf( "powstał nowy wątek nr %d\n", i);
- }
- i++;
- Sleep(20000);
- return 0;
- }
- //---------------------------------------------------------------------------
- // trzy takie funkcje pracują współbieŜnie w programie
- DWORD WINAPI funkcja_watku( void *argumenty )
- {
- int costam=0;
- dane_dla_watku* wazonik = reinterpret_cast< dane_dla_watku* >( argumenty );
- while(wazonik->tab[costam]!=NULL)
- {
- costam++;
- }
- dane_dla_watku marmolada;
- marmolada.k = (wazonik->k)/2;
- marmolada.p = wazonik->p;
- DWORD id; // identyfikator wątku
- watki[costam] = CreateThread(
- NULL, // atrybuty bezpieczeństwa
- 0, // inicjalna wielkość stosu
- funkcja_watku, // funkcja wątku
- (void *)&marmolada,// dane dla funkcji wątku
- 0, // flagi utworzenia
- &id );
- unsigned int licznik = 0;
- struct dane_dla_watku *moje_dane = (struct dane_dla_watku *)argumenty;
- marmolada.k = marmolada.k +1;
- watki[costam+1] = CreateThread(NULL, 0, funkcja_watku, (void *)&marmolada, 0, &id);
- merge(costam, costam+1);
- //Sleep( 1000 );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement