6a8e4b9595697f1d4a19e76e1320b440a32ec431
[reactos.git] / rostests / tests / bench / bench-thread.c
1 #include <stdio.h>
2 #include <windows.h>
3
4 #define NR_THREADS (30)
5
6
7 DWORD WINAPI
8 thread_main1(LPVOID param)
9 {
10 printf("Thread 1 running (Counter %lu)\n", (DWORD)param);
11 SleepEx(INFINITE, TRUE);
12 return 0;
13 }
14
15
16 DWORD WINAPI
17 thread_main2(LPVOID param)
18 {
19 printf("Thread 2 running (Counter %lu)\n", (DWORD)param);
20 Sleep(INFINITE);
21 return 0;
22 }
23
24
25 int main (void)
26 {
27 DWORD i=0;
28 DWORD id;
29
30 #if 1
31 printf("Creating %d threads...\n",NR_THREADS*2);
32 for (i=0;i<NR_THREADS;i++)
33 {
34 CreateThread(NULL,
35 0,
36 thread_main1,
37 (LPVOID)i,
38 0,
39 &id);
40
41 /* CreateThread(NULL,
42 0,
43 thread_main2,
44 (LPVOID)i,
45 0,
46 &id);*/
47 }
48
49 printf("All threads created...\n");
50
51 /*
52 * Waiting for threads is not implemented yet.
53 * If you want to see all threads running, uncomment the
54 * call to SuspendThread(). The test application will
55 * freeze after all threads are created.
56 */
57 /* SuspendThread (GetCurrentThread()); */
58
59 #else
60
61 printf("Creating thread...\n");
62
63 hThread = CreateThread(NULL,
64 0,
65 thread_main1,
66 (LPVOID)i,
67 0,
68 &id);
69
70 printf("Thread created. Waiting for termination...\n");
71
72 WaitForSingleObject (hThread,
73 -1);
74
75 CloseHandle (hThread);
76
77 printf("Thread terminated...\n");
78 #endif
79 printf("Exiting\n");
80 return 0;
81 }