사용 WaitForSingleObject 함수 &와 WaitForMultipleObjects 기능
#INCLUDE <STDIO.H> #INCLUDE <WINDOWS.H> #INCLUDE <process.h>
부호 WINAPI ThreadFunc (무효 *의 ARG); 본체 (INT는 argc, 숯불 *는 argv []) 값 int { HANDLE hThread; DWORD의 WR; 서명되지 않은 threadID; INT PARAM = 5; hThread = (HANDLE) _beginthreadex (NULL, 0, ThreadFunc (무효 *) PARAM 0, threadID); 경우 ((= WR의 WaitForSingleObject (hThread, INFINITE)) == WAIT_FAILED) { 둔다 ( "스레드 대기 에러"); 반환 -1; } 의 printf ( "대기 결과 : % S \ n"(WR == WAIT_OBJECT_0) "신호"? "타임 아웃"); ( "마지막 주의") 풋; 0을 반환; 부호 WINAPI ThreadFunc (무효 * ARG) { INT I; * CNT = INT ((INT의 *) ARG); 대 (I = 0; I <CNT; I ++) { 슬립 (1000); ( "스레드를 실행") 풋; } 0을 반환; }
#INCLUDE <STDIO.H>
#INCLUDE <WINDOWS.H>
#INCLUDE <process.h>
#DEFINE의 NUM_THREAD 50
부호 WINAPI threadInc (무효 *의 ARG);
부호 WINAPI threadDec (무효 *의 ARG);
긴 긴 NUM = 0;
int 주 (int argc, 문자 *는 argv [])
{
핸들 tHandles [NUM_THREAD];
I에서 INT;
( "긴 길이를 sizeof % D \ n"는 sizeof (긴 길이))의 printf;
대 (나는 <NUM_THREAD; 나는 0 = I ++)
{
경우 (I % 2)
tHandles [I] = (HANDLE) _beginthreadex (NULL, 0, threadInc, NULL, 0, NULL);
그밖에
tHandles [I] = (HANDLE) _beginthreadex (NULL, 0, threadDec, NULL, 0, NULL);
}
와 WaitForMultipleObjects (NUM_THREAD, tHandles, TRUE, INFINITE);
의 printf ( "결과 %의 LLD \ n", NUM);
0을 반환;
}
부호 WINAPI threadInc (무효 *의 ARG)
{
I에서 INT;
대 (I = 0; I <50000000; I ++)
A + = 1;
0을 반환;
}
부호 WINAPI threadDec (무효 *의 ARG)
{
I에서 INT;
대 (I = 0; I <50000000; I ++)
A - = 1;
0을 반환;
}