Advertisement
desdemona

fgtghiufhoprt

Mar 21st, 2013
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5.  
  6. #pragma argsused
  7.  
  8. struct dane_dla_watku
  9. {
  10.     //char nazwa[50];
  11.     int p;
  12.     int k;
  13.     int *tab;
  14. };
  15.  
  16. // priorytety wątków
  17. //int priorytety[3] = { THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_NORMAL, THREAD_PRIORITY_ABOVE_NORMAL};
  18.  
  19.  
  20. HANDLE watki[200]; // dojścia (uchwyty) wątków
  21.  
  22. void merge(int pierwszy_watek, int drugi_watek)
  23. {
  24.  
  25. }
  26.  
  27. // deklaracja funkcji wątku
  28. DWORD WINAPI funkcja_watku( void *argumenty );
  29. //---------------------------------------------------------------------------
  30. int main(int argc, char **argv)
  31. {
  32.     int i;
  33.         int ilosc_elementow = 200;
  34.     int tab[200];
  35.     DWORD id; // identyfikator wątku
  36.     //clrscr();
  37.     printf( "Uruchomienie programu\n" );
  38.     // tworzenie wątków
  39.  
  40.  
  41.     for(i=0; i<200; i++)
  42.     {
  43.         tab[i]=rand()%1000;
  44.     }
  45.  
  46.     dane_dla_watku dane = {0, 199, tab};
  47.     watki[0] = CreateThread(
  48.     NULL, // atrybuty bezpieczeństwa
  49.     0, // inicjalna wielkość stosu
  50.     funkcja_watku, // funkcja wątku
  51.     (void *)&dane,// dane dla funkcji wątku
  52.     0, // flagi utworzenia
  53.     &id );
  54.     if( watki[0] != INVALID_HANDLE_VALUE )
  55.     {
  56.         printf( "powstał nowy wątek nr %d\n", i);
  57.     }
  58.     i++;
  59.    
  60.     Sleep(20000);
  61.     return 0;
  62. }
  63. //---------------------------------------------------------------------------
  64. // trzy takie funkcje pracują współbieŜnie w programie
  65. DWORD WINAPI funkcja_watku( void *argumenty )
  66. {
  67.     int costam=0;
  68.  
  69.     dane_dla_watku* wazonik = reinterpret_cast< dane_dla_watku* >( argumenty );
  70.    
  71.     while(wazonik->tab[costam]!=NULL)
  72.     {
  73.         costam++;
  74.     }
  75.  
  76.     dane_dla_watku marmolada;
  77.     marmolada.k = (wazonik->k)/2;
  78.     marmolada.p = wazonik->p;
  79.     DWORD id; // identyfikator wątku
  80.     watki[costam] = CreateThread(
  81.     NULL, // atrybuty bezpieczeństwa
  82.     0, // inicjalna wielkość stosu
  83.     funkcja_watku, // funkcja wątku
  84.     (void *)&marmolada,// dane dla funkcji wątku
  85.     0, // flagi utworzenia
  86.     &id );
  87.  
  88.     unsigned int licznik = 0;
  89.     struct dane_dla_watku *moje_dane = (struct dane_dla_watku *)argumenty;
  90.     marmolada.k = marmolada.k +1;
  91.  
  92.     watki[costam+1] = CreateThread(NULL, 0, funkcja_watku, (void *)&marmolada, 0, &id);
  93.  
  94.     merge(costam, costam+1);
  95.    
  96.     //Sleep( 1000 );
  97.  
  98.    
  99.  
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement