본문 바로가기

c++

[C++11] Storage class specifiers에 thread_local 추가 Storage class specifiers는 기존에 register, static, extern, auto가 존재했습니다.auto는 의미가 없기 때문에 C++11에서는 다른 용도로 사용됩니다.2014/12/10 - [Programming/C++11&14] - [C++11] auto 키워드C++11에는 thread를 지원하기 위해서 thread_local이 추가되었습니다.TLS(Thread Local Storage)를 지원하기 위해서 사용됩니다.하나의 변수를 선언하면 각각의 thread에 별도로 적용됩니다.thread_local은 Visual Studio 2013은 지원하지 않고 Visual Studio 2015부터 지원합니다.thread_local은 다음과 같이 사용하면 됩니다. #include #in.. 더보기
[C++11] std::mutex를 통한 thread 동기화 2015/06/28 - [Programming/C++11&14] - [C++11] thread 지원 - future를 통한 return값 획득 (2)이미 대부분의 OS는 동기화를 위한 다양한 장치가 마련되어 있습니다.thread가 C++11에서 직접 지원하면서 동기화를 위한 std::mutex가 추가되었습니다.헤더는 이며 사용 방법은 다음과 같습니다. #include #include #include std::mutex mtx; void ThreadFunc(int nID, int& nVal) { for (int i = 0 ; i < 5 ; ++i) { mtx.lock(); std::cout 더보기
[C++11] thread 지원 - future를 통한 return값 획득 (2) 2015/06/27 - [Programming/C++11&14] - [C++11] thread 지원 (1)C++11의 thread에서 return으로 결과를 받는 방법입니다.결과를 받는 방법은 약간 복잡할 수 있습니다.먼저 std::promise라는 클래스 템플릿이 추가되었습니다. 헤더에 추가되어 있습니다.promise는 값이나 예외를 저장할 수 있는 기능을 가지고 있습니다.그리고 promise 객체를 통해서 생성되는 std::future를 통해서 나중에 결과를 얻을 수 있습니다.기본적인 코드는 다음과 같습니다. void ThreadFunc(std::promise& retVal) { retVal.set_value(1); } int main() { std::promise p; auto f = p.get_f.. 더보기
[C++11] thread 지원 (1) C++11에 언어 차원의 thread를 지원하게 되었습니다.OS에 상관없이 사용이 가능하며 전달할 수 있는 인자의 형식도 자유롭게 사용이 가능합니다.thread는 헤더에 정의가 되어있습니다.먼저 간단한 thread의 예제입니다. #include #include void ThreadFunc(int nVal) { std::cout 더보기
C++ REST SDK(카사블랑카) wstring으로 받는 법 C++ REST SDK를 통해서 파일로 받는 방법은 아래 링크를 참조하시면 됩니다.2015/06/25 - [Programming/C&C++] - C++ REST SDK(카사블랑카)로 웹페이지 가져오기일반적으로 HTTP클라이언트는 파일을 생성하지 않습니다.받은 결과를 직접 파싱해서 사용하는 것이 일반적인 방식입니다.std::wstring으로 결과를 전달받는 전체 코드는 다음과 같습니다.wstring으로 전달 받은 이후에 XML 파서(Parser) 등으로 원하는 값을 출력하면 됩니다. #include // std::wstring #include // std::vector #include // std::pair #include int main() { // return wstring value std::wstr.. 더보기
C++ REST SDK(카사블랑카)로 웹페이지 가져오기 먼저 카사블랑카(Casablanca)를 설치하는 방법은 아래 링크에서 확인 가능합니다.2015/06/12 - [Programming/C&C++] - C++ REST SDK(Casablanca) 설치 방법C++ REST SDK를 통해서 간단하게 웹페이지를 가져오는 방법입니다.먼저 웹페이지를 가져오고 가져온 내용을 html 파일로 기록하기 위해서 다음 헤더를 추가합니다. #include #include 그리고 using 구문을 추가합니다.반복적인 코딩을 제거하기 위함입니다. using namespace utility; using namespace web; using namespace web::http; using namespace web::http::client; using namespace concurre.. 더보기
MFC 사용자 정의 메시지 처리 WM_CREATE, WM_PAINT 등의 메시지는 이미 정의되어 있는 윈도우 메시지입니다.WM_ 접두어는 윈도우 메시지를 위해서 사용됩니다.이런 기본적으로 정의된 메시지 외에 사용자가 정의한 메시지를 처리할 경우도 존재합니다.UI 스레드를 추가해서 스레드간 통신에도 사용할 수 있습니다.간단한 MFC 프로젝트를 생성합니다.Dialog based로 변경하고 Finish를 눌러서 생성합니다.Dlg.cpp(앞에 프로젝트명이 붙습니다.) 파일에 Message Map이 정의되어 있습니다. BEGIN_MESSAGE_MAP(CUMTestDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() END_MESSAGE_MAP() 메시지와 해당 메시지를 처.. 더보기
SDI Document/View 구조 제거하기 MFC의 SDI(Single Document Interface)는 기본적으로 Document/View 구조를 지원합니다.프로젝트를 생성할 때 몇 번의 클릭으로 간단하게 Document/View 기반으로 생성할 수 있습니다.자동으로 생성되는 Doc/View 구조가 필요하지 않을 경우도 발생합니다.SDI에서 Doc/View 구조를 제거하는 방법입니다.먼저 프로젝트를 생성합니다.일단 Document/View architecture support는 그대로 둡니다. Doc/View가 설정된 프로젝트에서 구조를 제거하기 위해서 입니다.Compound Document Support, Document Template Properties는 기본 설정을 사용합니다.그리고 Database Support도 기본 설정으로 둡니.. 더보기