#include "stdafx.h"
#include <string>
#include <stdio.h>
#include <windows.h>
#include <process.h>
using namespace std;
typedef struct ThreadX
{
int a;
int b;
};
unsigned _stdcall func(void *pthis)
{
ThreadX *pthx = (ThreadX *)pthis;
printf("the members are %d,%d\n",pthx->a,pthx->b);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
ThreadX *thread1 = new ThreadX;
thread1->a = 2;
thread1->b = 4;
HANDLE hth1 = (HANDLE)_beginthreadex(NULL,0,func,thread1,CREATE_SUSPENDED,NULL);
if(hth1 == 0)
printf("Failed to create thread\n");
DWORD dwExitCode;
GetExitCodeThread(hth1,&dwExitCode);
printf("initial thread 1 exit code = %u\n",dwExitCode);
ThreadX *thread2 = new ThreadX;
thread2->a = 6;
thread2->b = 9;
HANDLE hth2 = (HANDLE)_beginthreadex(NULL,0,func,thread2,CREATE_SUSPENDED,NULL);
if(hth2 == 0)
printf("Failed to create thread\n");
GetExitCodeThread(hth1,&dwExitCode);
printf("initial thread 2 exit code = %u\n",dwExitCode);
ResumeThread(hth1);
ResumeThread(hth2);
WaitForSingleObject(hth1,INFINITE);
WaitForSingleObject(hth2,INFINITE);
GetExitCodeThread(hth1,&dwExitCode);
printf("initial thread 1 exit code = %u\n",dwExitCode);
GetExitCodeThread(hth1,&dwExitCode);
printf("initial thread 2 exit code = %u\n",dwExitCode);
CloseHandle(hth1);
CloseHandle(hth2);
delete thread1;
thread1 = NULL;
delete thread2;
thread2 = NULL;
printf("Primary thread terminating.\n");
return 0;
}