aboutsummaryrefslogtreecommitdiff
path: root/test cases/common/98 threads/threadprog.cpp
blob: 3c69dc3a845bbe64589adac0e86a7ba6c568ca19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* On Windows not all versions of VS support C++11 and
 * some (most?) versions of mingw don't support std::thread,
 * even though they do support c++11. Since we only care about
 * threads working, do the test with raw win threads.
 */

#if defined _WIN32

#include<windows.h>
#include<stdio.h>

DWORD WINAPI thread_func(LPVOID) {
    printf("Printing from a thread.\n");
    return 0;
}

int main(void) {
    printf("Starting thread.\n");
    HANDLE th;
    DWORD id;
    th = CreateThread(NULL, 0, thread_func, NULL, 0, &id);
    WaitForSingleObject(th, INFINITE);
    printf("Stopped thread.\n");
    return 0;
}
#else

#include<thread>
#include<cstdio>

void main_func(void) {
    printf("Printing from a thread.\n");
}

int main(void) {
    printf("Starting thread.\n");
    std::thread th(main_func);
    th.join();
    printf("Stopped thread.\n");
    return 0;
}

#endif