/[cvs]/joko/Uni/BSArch/02/bakery_main.c
ViewVC logotype

Annotation of /joko/Uni/BSArch/02/bakery_main.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Fri May 26 11:08:12 2006 UTC (18 years, 6 months ago) by joko
Branch: MAIN
Changes since 1.2: +2 -2 lines
File MIME type: text/plain
+ My_InitializeCriticalSection
+ My_DeleteCriticalSection
+ various minor changes (Makefile, MAX_THREADS)

1 joko 1.1 #include <stdio.h>
2     #include <windows.h>
3    
4     #include "bakery.h"
5    
6     static MY_LPCRITICAL_SECTION lpsec;
7     static int value;
8    
9     DWORD WINAPI thread_func(LPVOID arg) {
10     int myId = (int) arg;
11     int iter = 0;
12    
13     do {
14    
15 joko 1.2 //My_EnterCriticalSection( myId, lpsec );
16 joko 1.1
17     /*----*/
18     value = myId;
19     Sleep(10);
20     if (value != myId) {
21     printf("Thread %d: invalid state! (iter: %d)\n",myId,iter);
22     } else {
23     printf("Thread %d: ok! (iter: %d)\n",myId,iter);
24     }
25     /*----*/
26    
27 joko 1.2 //My_LeaveCriticalSection( myId, lpsec );
28 joko 1.1
29     iter++;
30     } while (iter < 30);
31     return 0;
32     }
33    
34    
35     main () {
36     HANDLE th1, th2, th3;
37 joko 1.3 My_InitializeCriticalSection( &lpsec );
38 joko 1.1
39     th1 = CreateThread( NULL, 0, thread_func, (void*) 1, 0, NULL );
40     th2 = CreateThread( NULL, 0, thread_func, (void*) 2, 0, NULL );
41     th3 = CreateThread( NULL, 0, thread_func, (void*) 3, 0, NULL );
42    
43     WaitForSingleObject( th1, INFINITE );
44     WaitForSingleObject( th2, INFINITE );
45     WaitForSingleObject( th3, INFINITE );
46    
47 joko 1.3 My_DeleteCriticalSection( lpsec );
48 joko 1.1 }
49    

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed