/* 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(int, char**) {
    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() {
    printf("Printing from a thread.\n");
}

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

#endif
