본문 바로가기

c++11

[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(Casablanca) 설치 방법 MS에서 제공하는 프로젝트의 하나인 REST SDK의 설치 방법입니다.Casablanca라는 코드명을 가진 프로젝트입니다.modern asynchronous C++ API 디자인을 사용하는 cloud-based client-server communication입니다.프로젝트에 대한 정보는 아래의 링크에서 확인이 가능합니다.https://casablanca.codeplex.com/이전 버전의 경우는 다운로드를 제공했지만 현재는 Nuget Package를 통해서 적용이 가능합니다.C++ REST SDK를 적용하는 방법입니다.먼저 Visual Studio 2013을 실행합니다.간단한 콘솔 프로젝트를 생성합니다.설정을 바꾸지 않고 프로젝트를 생성합니다.C++ REST SDK를 받기 위해서 임시로 생성하는 프로젝.. 더보기
[C++11] 새로워진 random number 생성 난수(Random number) 생성은 일반적으로 확률 값이 필요한 경우에 사용이 됩니다.프로그래밍을 처음 배울 때, 로또 번호 생성기를 제작할 때 쓰이기도 합니다.그 외에 난수를 기반으로 하는 암호화에도 활용이 됩니다.기존의 난수 생성은 다음과 같습니다. #include #include #include int main() { srand((int)time(0)); int nRand1 = rand(); int nRand2 = rand() % 11; std::cout 더보기
[C++11] std::pair를 확장한 std::tuple Boost에 존재하던 tuple이 C++ 표준으로 채택되었습니다. C++ TR1부터 사용이 가능해졌지만 C++11에 분류한 것은 이전에 작성한 가변인자 템플릿때문입니다. tuple은 기존의 std::pair를 확장한 자료형입니다. std::pair가 2개의 값을 한 번에 저장할 수 있지만 tuple은 제한이 없습니다. 기존의 C++ TR1에서는 10개까지 저장이 되었습니다. tuple은 2개 이상의 값을 한 번에 반환하거나 전달할 때 사용하면 유용합니다. 물론 구조체를 통해서 가능한 방법이긴 하지만 구조체는 정의를 해서 사용해야 합니다. tuple을 이용하면 간단하게 다양한 값들을 한 번에 전달이 가능하게 됩니다. 예제 코드는 다음과 같습니다. #include #include #include int ma.. 더보기
[C++11] 가변인자 템플릿을 위한 sizeof... 연산자 가변인자 템플릿의 지원으로 템플릿을 작성하는 것이 더 편리하게 되었습니다.C++11의 가변인자 템플릿에 대한 설명은 아래 링크를 통해서 참조할 수 있습니다.2015/03/05 - [Programming/C++11&14] - [C++11] 가변인자 템플릿(Variadic Templates)가변인자 템플릿이 추가되면서 sizeof...연산자가 추가되었습니다.sizeof...은 기존의 sizeof와는 약간 다른 기능을 합니다.sizeof...은 파라미터 팩의 수를 가져오는 역할을 합니다.가변인자로 넘어온 파라미터를 파라미터 팩이라고 하는데 ...이 실제 몇 개의 인자인가 알 수 있습니다.이전 가변인자 템플릿의 예제를 가져와서 조금 수정해 보도록 하겠습니다. #include using namespace std;.. 더보기
[C++11] 가변인자 템플릿(Variadic Templates) C와 C++에는 가변인자 함수가 존재합니다....이라는 생략 부호를 사용하는 특이한 형태의 함수입니다.C/C++에는 대표적인 가변인자 함수인 printf가 존재합니다. 가변인자 함수에 대해서는 아래의 링크를 참조하시면 됩니다.2014/12/07 - [Programming/C&C++] - 가변 인자 함수의 사용법(vprintf, vsprintf)2014/12/07 - [Programming/C&C++] - 가변 인자(Variable Arguments) 내부 구조C++11에는 가변인자를 템플릿에도 적용이 가능하게 되었습니다.가변인자 템플릿은 다음과 같은 형식으로 되어 있습니다. template returntype functionname(Arguments... args); template class class.. 더보기