SPRING :: NOTE
[C] runtime library Thread / 1부터 100까지 합 구하기 본문
Development Language/C · C++ · MFC
[C] runtime library Thread / 1부터 100까지 합 구하기
RAYZIE 2016. 6. 8. 18:16반응형
#include
#include
#include
#include
typedef struct SumInfo
{
int a, b, s;
}SUMINFO, *PSUMINFO;
unsigned _stdcall Sum(void* p);
void WriteString(const char* lpszFormat, ...)
{
char str[1024] = { 0 };
va_list argList;
va_start(argList, lpszFormat);
vprintf(lpszFormat, argList); // 런타임 함수
va_end(argList);
}
void main()
{
char temp[1024];
unsigned dwThreadId;
printf("*** 예제 C Runtime Library를 이용한 스레드 ***\n");
PSUMINFO psi = (PSUMINFO)malloc(sizeof(SUMINFO));
psi->a = 1;
psi->b = 100;
psi->s = 0;
unsigned h = _beginthreadex(
NULL, // 보안속성 SECURITY_ATTRIBUTES 구조체 포인터
0, // 스레드가 실행될 때 Commit 상태의 스택 크기 설정
Sum, // 스레드가 실행할 함수 포인터 (unsigned (_stdcall *pF))
psi, // 스레드 함수에게 전달할 포인터. 일반적으로 데이터를 보냄
NULL, // 스레드 함수 실행 옵션
&dwThreadId); // 스레드 아이디를 리턴받는다.
if (h == 0)
return;
while (1)
{
DWORD dwWaitStatus = WaitForSingleObject((void*)h, 20);
if (dwWaitStatus == WAIT_OBJECT_0)
{
CloseHandle((void*)h);
break;
}
else if (dwWaitStatus == WAIT_TIMEOUT)
{
_putch('.');
}
else
{
break;
}
}
scanf_s(temp);
free(psi);
_endthreadex(0);
}
unsigned _stdcall Sum(void* p)
{
PSUMINFO psi = (PSUMINFO)p;
do
{
psi->s += psi->a;
Sleep(20);
} while (psi->a++ != psi->b);
WriteString("\nSUM결과 %d\n", psi->s);
return psi->s;
}
반응형
'Development Language > C · C++ · MFC' 카테고리의 다른 글
[C] Thread / 1부터 100까지 계산하면서 키보드입력받는 프로그램 (0) | 2016.06.08 |
---|---|
[C] WIN32 Thread / 1부터 100까지 더하는동안 점찍기 (0) | 2016.06.08 |
[C++] 16진수 값을 받아와 8bit 2진수로 변환해서 바이너리 파일로 저장해주는 프로그램 (0) | 2016.06.08 |
[C] 바이너리 파일 변환기 (0) | 2016.06.08 |
[C] 2차원배열 메모리 동적 할당 (0) | 2016.05.13 |
Comments