C++ 멀티 쓰레드 프로그래밍 방법입니다. 아래와 같이 하면 쓰레드가 Background로 실행이 됩니다.
GUI프로그래밍이야 MFC를 써야 하겠지만, 가장 민감한 아랫부분을 조정하기 위해서 가능한 다른 부분은 native c++ 코딩을 하려고 하니 여러가지 에로사항이 꽃피우는 군요. ㅋ
C++은 대학때 하고 안하다가, 다시 하려니 부딪치는게 많네요. MFC 개발법 찾고, 쓰레드 처리하는 법 찾고, 소켓 만드는 법 찾고, 여러가지 예제 만들어보면서 확실히 C++이 제어할 수 있는게 더 많은 강력한 언어라는 건 알겠는데, 아직은 불편해요 ㅠ.ㅜ
C++ 기초적인 쓰레드 했으니, 이제 병렬 프로그래밍해야죠 ㅡㅡ;; 그 다양한 패턴들은 또 어떻게 구현을 하고 최적화할지.. ㅋㅋㅋㅋㅋㅋ
자세한 레퍼런스는
http://msdn.microsoft.com/en-us/library/ms684847(VS.85).aspx
------------------------------------------------------------------------------------------------------------
// ThreadTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <Windows.h>
#include <strsafe.h>
#define BUF_SIZE 255
void DisplayMessage (HANDLE hScreen, int Data, int Count)
{
TCHAR msgBuf[BUF_SIZE];
size_t cchStringSize;
DWORD dwChars;
StringCchPrintf(msgBuf, BUF_SIZE,
TEXT("iteration %02d thread = %02d \n"), Count, Data);
StringCchLength(msgBuf, BUF_SIZE, &cchStringSize);
WriteConsole(hScreen, msgBuf, cchStringSize,
&dwChars, NULL);
Sleep(1000);
}
DWORD WINAPI threadProcess( LPVOID lpParam ){
int Data = 0;
int count = 0;
HANDLE hStdout = NULL;
if( (hStdout = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE )
return 1;
Data = *((int*)lpParam);
for (count = 0; count <= 7; count++ )
{
DisplayMessage (hStdout, Data, count);
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
int iThread1 = 1;
int iThread2 = 2;
int iThread3 = 3;
HANDLE thread1 = 0;
HANDLE thread2 = 0;
HANDLE thread3 = 0;
thread1 = CreateThread( NULL, 0,
threadProcess, &iThread1, 0, NULL);
if ( thread1 == NULL)
ExitProcess(iThread1);
thread2 = CreateThread( NULL, 0,
threadProcess, &iThread2, 0, NULL);
if ( thread2 == NULL)
ExitProcess(iThread2);
thread3 = CreateThread( NULL, 0,
threadProcess, &iThread3, 0, NULL);
if ( thread3 == NULL)
ExitProcess(iThread3);
HANDLE arrThread[3];
arrThread[0] = thread1;
arrThread[1] = thread2;
arrThread[2] = thread3;
for(int i = 0;i < 10; i++){
printf("%d\n", i);
Sleep(500);
}
WaitForMultipleObjects( 3,
arrThread, TRUE, INFINITE);
printf("all finished \n");
CloseHandle(thread1);
CloseHandle(thread2);
CloseHandle(thread3);
return 0;
}
'backup' 카테고리의 다른 글
7월 30일 파운드 달러 변곡점 매매 이제 변곡 진짜 시작? (0) | 2013.07.30 |
---|---|
그레고리안 밴드를 아시나요? 대중음악을 그레고리안 성가풍으로 (0) | 2013.07.30 |
FX마진거래 일 거래량 3000조의 의미 (2) | 2013.07.29 |
[설득이론]어떻게 원하는 것을 얻는가 (0) | 2013.07.28 |
공빈의 동이열전 (0) | 2013.07.28 |