c/c++

스레드 생성

밀크빵 2013. 3. 26. 13:57


#include <windows.h>

#include <process.h>

#include <iostream>


using namespace std;


#define MAX_THREAD  2


DWORD WINAPI ThFunc(LPVOID lpParam)

{

    int n;

    printf("[%d] address of 'n' is %p\n", _threadid, &n);

    printf("[%d] exit\n", _threadid);

    return 0;

}


int main(int argc, char **argv)

{

    int i = 0, nData = 100;

    DWORD dwThID[MAX_THREAD];

    HANDLE hThreads[MAX_THREAD];

    unsigned long ulStackSize = 0;


    memset(dwThID, 0, sizeof(dwThID)/sizeof(dwThID[0]));

    memset(hThreads, 0, sizeof(hThreads)/sizeof(hThreads[0]));


    for ( i = 0; i < MAX_THREAD; i++ )

    {

        hThreads[i] = CreateThread(NULL, ulStackSize, ThFunc, &nData, CREATE_SUSPENDED, &dwThID[i]);

        printf("[%d] start\n", (int)dwThID[i]);

        SetThreadPriority(hThreads[i], THREAD_PRIORITY_HIGHEST);

        printf("[%d] thread priority is %d\n", dwThID[i], GetThreadPriority(hThreads[i]));

        ResumeThread(hThreads[i]);

    }


    WaitForMultipleObjects(MAX_THREAD, hThreads, TRUE, INFINITE);

    printf("thread working is done.\n");


    for ( i = 0; i < MAX_THREAD; i++ )

        CloseHandle(hThreads[i]);


    return 0;

}