Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <stdio.h>
- #include <conio.h>
- long zmienna =1;
- static CRITICAL_SECTION cs;
- void watek(int* liczba_wejsc)
- {
- while(true){
- EnterCriticalSection(&cs);
- EnterCriticalSection(&cs); //dziala z tym
- zmienna+=100;
- zmienna*=200;
- zmienna/=200;
- zmienna-=100;
- (*liczba_wejsc)++;
- LeaveCriticalSection(&cs);
- }
- }
- void watek2(int* liczba_wejsc)
- {
- while(true){
- while(!TryEnterCriticalSection(&cs)) //pobuje wejsc do sekcji
- {
- Sleep(20);
- }
- zmienna+=100;
- zmienna*=200;
- zmienna/=200;
- zmienna-=100;
- (*liczba_wejsc)++;
- LeaveCriticalSection(&cs);
- }
- }
- long zmienna2=1;
- void watekPorownanie(int* liczba_wejscPor)
- {
- while(true){
- EnterCriticalSection(&cs);
- //while(!TryEnterCriticalSection(&cs)) //pobuje wejsc do sekcji
- //{
- // Sleep(20);
- //}
- zmienna2+=100;
- zmienna2*=200;
- zmienna2/=200;
- zmienna2-=100;
- (*liczba_wejscPor)++;
- LeaveCriticalSection(&cs);
- }
- }
- int main()
- {
- int liczba_wejsc=0;
- InitializeCriticalSection(&cs);
- //CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek,&liczba_wejsc,NULL,NULL);
- //CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek,&liczba_wejsc,NULL,NULL);
- CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek2,&liczba_wejsc,NULL,NULL);
- CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watek2,&liczba_wejsc,NULL,NULL);
- int liczba_wejscPor=0;
- CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watekPorownanie,&liczba_wejscPor,NULL,NULL);
- CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)watekPorownanie,&liczba_wejscPor,NULL,NULL);
- while(true)
- {
- if(_kbhit()) break;
- printf("zmienna:%lu\tl.w:%lu\t",zmienna,liczba_wejsc);
- printf("zmienna2:%lu\tl.w:%lu\n",zmienna2,liczba_wejscPor);
- Sleep(200);
- }
- DeleteCriticalSection(&cs);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement