#include #include int value=0; DWORD WINAPI ThreadProc(LPVOID param); DWORD WINAPI ThreadProc2(LPVOID param); void process(HANDLE hthread); int main(int argc, char *argv[]) { DWORD dwThreadId; HANDLE hthread=0; hthread=CreateThread(NULL,0,ThreadProc,NULL,0,&dwThreadId); WaitForSingleObject(hthread,INFINITE); process(hthread); } DWORD WINAPI ThreadProc(LPVOID param) { process(0); } void process(HANDLE hthread) { HANDLE hthread2; DWORD dwThreadId; if(hthread==0) { /* proceso hijo */ hthread2=CreateThread(NULL,0,ThreadProc2,NULL,0,&dwThreadId); WaitForSingleObject(hthread2,INFINITE); printf("HIJO value= %d\n",value); return; } else { /* proceso padre */ printf("PADRE value= %d\n",value); } } DWORD WINAPI ThreadProc2(LPVOID param) { value=5; return(0); }