SlideShare une entreprise Scribd logo
1  sur  92
About  Visual C++ 10 Microsoft Visual C++ MVP 마이에트 엔터테인먼트 Server Programmer 최흥배
2003년 1월 ~
목차 Visual C++ 6에서  Visual C++ 9….. Visual C++ 10의변화 C++0x의 신 기능 Concurrency Runtime
1. Visual C++ 6 ~ 9
[object Object]
 UI 완전 변경
 Managed C++
 Visual C++ 7새로운 Visual Studio 시작…
[object Object]
C++ 표준을 더욱 더 준수
 VC++ 버전 7(2002와 동일),[object Object]
64비트 컴파일 지원
 Managed C++ -> C++/CLI
 VC++ 버전 8,[object Object]
[object Object]
 MFC UI 라이브러리 추가
 멀티 스레드 디버깅 강화
 C++0x TR1 라이브러리 추가
 VC++ 버전 92002부터 시작했던  Visual Studio 체계의 마지막
Visual  Studio  2010( Visual C++ 10) 새로운 Visual Stuido시대의 시작
뭐 바뀐게 있냐? -_-
2. Visual C++ 10의 변화
Visual C++ Intellisense
[object Object]
Intellisense를 크게 어휘분석과 의미 해석으로 나눔
빠른 개발을 위해 ifdef를 획기적으로 이용
Intellisense컴파일러를 FEACP 라고 부름  Front End Auto Complete Parser의 약어
 당시의 CPU 속도는 100MHz 정도.드롭 다운 윈도우를 100ms 이내에. 초기화、멤버 오프셋 계산、vtable생성 생략.,[object Object]
Ifdef지옥에 떨어졌음을 깨닫음
사람들은 Java나 C#의 Intellisense기능을 원함.
FEACP애서는 실현 불가능함,[object Object]
Dev 10 – Visual C++ 10
[object Object]
드롭 다운으로 올바를 멤버를 얻을 수 있는 것 이상
일부러 빌드를 하지 않아도 경고를 사전에 알 수 있다.Intellisense의 Parse 중에 발견된 에러는 진짜 에러 !!!
정확성에 의해 원시 코드의 리팩토링 등 가능
장래에는 유저가 접근할 수 있는 API 제공
 C++ 원키 코드에 대한 고정밀도의 정보에 접근할 수 있도록 할 예정,[object Object]
VC++ 6 VC++ 9 젤다의 전설 – 링크의 모험(패미콤) 젤다의 전설 – 신들의 트라이포스(슈퍼패미콤) VC++ 10 젤다의 전설 – 시간의 오카리나(닌텐도64)
[object Object]
응답성, 확장성, 정확성 강화 - 기존의 ncb파일 제거, SQL Compact로 대체  - 대 규모 프로젝트도 문제 없음 ,[object Object]
 Deploy  설정 가능,[object Object]
멀티 모니터 지원
디버깅 ,[object Object]
I DE 내,외에 위치 가능
 디버깅이 끝나면 보이지 않음.
 영구 저장된다.,[object Object]
추가된 MFC 라이브러리 Restart Manager CTaskDialog
3. C++ 0x의 신 기능 ,[object Object]
static_assert
Rvalue Reference
 lambda,[object Object]
 언어의 표현력이 증대 되고,
 성능 향상이 이루어졌습니다.,[object Object]
예제 코드 auto NPCName = "KKamahui";cout << "NPC Name : " << NPCName << endl; auto* CharInven = new CharacterInvenInfo(); typedef std::list<MCommand*> LIST_COMMAND;LIST_COMMAND::iteratoriter = m_listCommand.begin(); auto iter = m_listCommand.begin();
DEMO auto
static_assert Assert는 논리적인 오류 찾기, 작업 결과 확인,  처리해야 할 오류 조건 테스트 할때 사용 static_assert는 컴파일 시점에서 실체화할 템플릿의 전제 조건을 조사할 때 사용 static_assert( “constant-expression”, “error-message” ); “constant-expression” - 검사할 조건 식 “error-message”        -조건이 false일 경우  출력할 error 메시지
예제 코드 #include <iostream> using namespace std;   const int MAX_LEVEL = 120;   int main() {      static_assert( MAX_LEVEL <= 100, "Warring - MAX_LEVEL" );      return 0; }
예제 코드 template< typename T1, intStackSize > class MYSTACK {      static_assert( StackSize >= 10, "Stack Size Error" ); public :      MYSTACK() : data( new T[StackSize] )      {      } ………. };
DEMO static_assert
Rvalue Reference C++ 장점 중 하나인 성능은 향상 되었지만 ^^ C++ 단점 중 하나인 복잡함도 증가  -_-;
‘&’을 사용한 참조는 Lvalue Reference int a = 10; int& refA = a; ‘&&’을 사용한 참조는 Rvalue Reference int&& RrefA = a;
RValue Reference의 의해  프로그램의 성능이 좋아지고 낭비가 없어짐.
C++ C#, Java… C
왜 성능이 좋아질까요? Move semantics
NEW NEW ,[object Object]
 move 생성자와move 대입 연산자는 암묵적으로 만들어지지 않는다.
복사 생성자는move 생성자보다 우선 한다.
대입 연산자는 move 연산자보다 우선 한다.
복사가 아닌 메모리 상에서 이동
 C++0x의 STL에는 Move semantics가 적용 ,[object Object]
복사 생성자와Move 생성자의 차이 // 복사 생성자 QuestInfo(const QuestInfo& quest)         : Name(new char[quest.NameLen]), NameLen(quest.NameLen) {       memcpy(Name, quest.Name, quest.NameLen); }   // Move 생성자 QuestInfo(QuestInfo&& quest)         : Name(quest.Name), NameLen(quest.NameLen) {       quest.Name = NULL;       quest.NameLen = 0; }
VC++ 10 Beta 1의 STL의  vector
std::move NPC npc2;  NPC npc3; npc3 = npc2; NPC npc7;          NPC npc8; npc8 = std::move(npc7);
Move semsntice에 따른 주의 점 int main() { 	vector<int> v1; 	v1.push_back(10); 	v1.push_back(12); 	vector<int> v2 = std::move(v1); cout << v1.size() << endl; cout << v2.size() << endl; 	return 0; }
Perfect forwarding void inner(int& i) { } template <typename T> void outer(T& t) { 	inner(t); } int main() { int a = 5; 	outer(a); 	outer(6); 	return 0; } 컴파일 하면 outer(6)에서 컴파일 에러가 발생 “error C2664: 'outer' : cannot convert parameter 1 from 'int' to 'int &'“ 파라메터에const를 포함하는 함수를 재정의
예제 코드 void inner(int& i) { } template <typename T> void outer(T&& t){ 	inner(t); } int main() { int a = 5; 	outer(a); 	outer(6); 	return 0; }
DEMO Rvalue Reference
lambda 간단하게 말하면 익명함수. 람다 식(람다 함수) C#에서는 람다 식 덕분에 Linq의 사용이 간편 C++에서는 STL을 사용할 때와 템플릿을 사용할 때 편리함
예제 코드 structFindDieUser { bool operator()  (User& tUser) const          {               return tUser.IsDie();          } }; vector< User >::iteratorIter; Iter = find_if( Users.begin(), Users.end(), FindDieUser() );
예제 코드 vector< User >::iteratorIter; Iter = find_if( Users.begin(),  Users.end(),             [](User& tUser) -> bool {                            return true == tUser.IsDie(); }  );
람다 사용 방법 [](파라메터) { 식 } int값에 50을 더한 후 반환하는 람다 함수   [](int x) { return x + 50; }
파라미터와 반환 값이 같을 때 [](파라미터) { 식 } [](int x) { return x + 50; } 파라미터와 반환 값이 다를 때 [](파라미터) -> 반환 값 자료형{ 식 } [](int x) -> bool { return true; } 반환 값이 없을 때 [](파라미터) { 식 } [](int x) { ++x; }
클로져 사용 int TotalMoney1 = 0; for_each( Moneys.begin(), Moneys.end(),           [&TotalMoney1](int Money)        { 	  TotalMoney1 += Money; 	} );
클래스의 멤버 함수 호출 클래스 멤버 내의 람다 식은 해당 클래스에서는 friend로 인식 람다 식에서 private 멤버의 접근도 가능
예제 코드 void AllSend() const { for_each( SendPackets.begin(), SendPackets.end(),  [this](inti){ Send(i); }        );  }
DEMO lambda

Contenu connexe

Tendances

[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍흥배 최
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
Introduction To Xaml
Introduction To XamlIntroduction To Xaml
Introduction To Xamlphoooo
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crowJaeseung Ha
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트효준 강
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부Gwangwhi Mah
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features SummaryChris Ohk
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013Esun Kim
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기Daehee Kim
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7sung ki choi
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1Chris Ohk
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback흥배 최
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Insuk (Chris) Cho
 
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GDG Korea
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나Astin Choi
 

Tendances (20)

[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
[KGC 2012]Boost.asio를 이용한 네트웍 프로그래밍
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
WTL 소개
WTL 소개WTL 소개
WTL 소개
 
Introduction To Xaml
Introduction To XamlIntroduction To Xaml
Introduction To Xaml
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트니름: 쉬운 SOA 단위 테스트
니름: 쉬운 SOA 단위 테스트
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
 
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
GKAC 2014 Nov. - 안드로이드 스튜디오로 생산성 올리기
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나
 

En vedette

KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요영욱 오
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동세민 이
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서tcaesvk
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012devCAT Studio, NEXON
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부Eunseok Yi
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부Eunseok Yi
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
 
C#으로 게임 엔진 만들기(3)
C#으로 게임 엔진 만들기(3)C#으로 게임 엔진 만들기(3)
C#으로 게임 엔진 만들기(3)지환 김
 
C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)지환 김
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)지환 김
 

En vedette (13)

KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 
C#으로 게임 엔진 만들기(3)
C#으로 게임 엔진 만들기(3)C#으로 게임 엔진 만들기(3)
C#으로 게임 엔진 만들기(3)
 
C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)C#으로 게임 엔진 만들기(2)
C#으로 게임 엔진 만들기(2)
 
C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)C#으로 게임 엔진 만들기(1)
C#으로 게임 엔진 만들기(1)
 

Similaire à About Visual C++ 10

카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Eunbee Song
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)Sang Don Kim
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli종빈 오
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++KyeongWon Koo
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Jin wook
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#명신 김
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍흥배 최
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013명신 김
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaLazy Ahasil
 

Similaire à About Visual C++ 10 (20)

카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
Changes in c++0x
Changes in c++0xChanges in c++0x
Changes in c++0x
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli
 
[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++[0618구경원]초보 게임프로그래머를 위한 c++
[0618구경원]초보 게임프로그래머를 위한 c++
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트
 
The Future of .NET and C#
The Future of .NET and C#The Future of .NET and C#
The Future of .NET and C#
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 

Plus de 흥배 최

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]흥배 최
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows흥배 최
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기흥배 최
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치흥배 최
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발흥배 최
 
닷넷 Apache avro
닷넷 Apache avro닷넷 Apache avro
닷넷 Apache avro흥배 최
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리흥배 최
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트흥배 최
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션흥배 최
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임흥배 최
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기흥배 최
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서흥배 최
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템흥배 최
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability흥배 최
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index흥배 최
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D흥배 최
 

Plus de 흥배 최 (20)

Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
Bash on Ubuntu on Windows
Bash on Ubuntu on WindowsBash on Ubuntu on Windows
Bash on Ubuntu on Windows
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
Wtl 개요와 설치
Wtl 개요와 설치Wtl 개요와 설치
Wtl 개요와 설치
 
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
KGC2015_C# 스크립트를 사용한 게임서버 모니터링 시스템개발
 
NLog 소개
NLog 소개NLog 소개
NLog 소개
 
닷넷 Apache avro
닷넷 Apache avro닷넷 Apache avro
닷넷 Apache avro
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
 
Mongodb 개발 포인트
Mongodb 개발 포인트Mongodb 개발 포인트
Mongodb 개발 포인트
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기닷넷프레임워크에서 Redis 사용하기
닷넷프레임워크에서 Redis 사용하기
 
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
Twitter의 대규모 시스템 운용 기술 어느 고래의 배속에서
 
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
Twitter에 있어서 대규모 시스템 구성, 3개의 원칙과 시스템
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
Tdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalabilityTdc2013 선배들에게 배우는 server scalability
Tdc2013 선배들에게 배우는 server scalability
 
[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index[Sdc 3rd] Boost multi_index
[Sdc 3rd] Boost multi_index
 
[0602 박민근] Direct2D
[0602 박민근] Direct2D[0602 박민근] Direct2D
[0602 박민근] Direct2D
 

About Visual C++ 10

  • 1. About Visual C++ 10 Microsoft Visual C++ MVP 마이에트 엔터테인먼트 Server Programmer 최흥배
  • 3.
  • 4.
  • 5. 목차 Visual C++ 6에서 Visual C++ 9….. Visual C++ 10의변화 C++0x의 신 기능 Concurrency Runtime
  • 7.
  • 8.
  • 9. UI 완전 변경
  • 11. Visual C++ 7새로운 Visual Studio 시작…
  • 12.
  • 13.
  • 14. C++ 표준을 더욱 더 준수
  • 15.
  • 17. Managed C++ -> C++/CLI
  • 18.
  • 19.
  • 20. MFC UI 라이브러리 추가
  • 21. 멀티 스레드 디버깅 강화
  • 22. C++0x TR1 라이브러리 추가
  • 23. VC++ 버전 92002부터 시작했던 Visual Studio 체계의 마지막
  • 24. Visual Studio 2010( Visual C++ 10) 새로운 Visual Stuido시대의 시작
  • 26. 2. Visual C++ 10의 변화
  • 28.
  • 29. Intellisense를 크게 어휘분석과 의미 해석으로 나눔
  • 30. 빠른 개발을 위해 ifdef를 획기적으로 이용
  • 31. Intellisense컴파일러를 FEACP 라고 부름 Front End Auto Complete Parser의 약어
  • 32.
  • 34. 사람들은 Java나 C#의 Intellisense기능을 원함.
  • 35.
  • 36. Dev 10 – Visual C++ 10
  • 37.
  • 38. 드롭 다운으로 올바를 멤버를 얻을 수 있는 것 이상
  • 39. 일부러 빌드를 하지 않아도 경고를 사전에 알 수 있다.Intellisense의 Parse 중에 발견된 에러는 진짜 에러 !!!
  • 40. 정확성에 의해 원시 코드의 리팩토링 등 가능
  • 41. 장래에는 유저가 접근할 수 있는 API 제공
  • 42.
  • 43. VC++ 6 VC++ 9 젤다의 전설 – 링크의 모험(패미콤) 젤다의 전설 – 신들의 트라이포스(슈퍼패미콤) VC++ 10 젤다의 전설 – 시간의 오카리나(닌텐도64)
  • 44.
  • 45.
  • 46.
  • 48.
  • 49. I DE 내,외에 위치 가능
  • 50. 디버깅이 끝나면 보이지 않음.
  • 51.
  • 52. 추가된 MFC 라이브러리 Restart Manager CTaskDialog
  • 53.
  • 56.
  • 57. 언어의 표현력이 증대 되고,
  • 58.
  • 59. 예제 코드 auto NPCName = "KKamahui";cout << "NPC Name : " << NPCName << endl; auto* CharInven = new CharacterInvenInfo(); typedef std::list<MCommand*> LIST_COMMAND;LIST_COMMAND::iteratoriter = m_listCommand.begin(); auto iter = m_listCommand.begin();
  • 61. static_assert Assert는 논리적인 오류 찾기, 작업 결과 확인, 처리해야 할 오류 조건 테스트 할때 사용 static_assert는 컴파일 시점에서 실체화할 템플릿의 전제 조건을 조사할 때 사용 static_assert( “constant-expression”, “error-message” ); “constant-expression” - 검사할 조건 식 “error-message”       -조건이 false일 경우 출력할 error 메시지
  • 62. 예제 코드 #include <iostream> using namespace std;   const int MAX_LEVEL = 120;   int main() {      static_assert( MAX_LEVEL <= 100, "Warring - MAX_LEVEL" );      return 0; }
  • 63. 예제 코드 template< typename T1, intStackSize > class MYSTACK {      static_assert( StackSize >= 10, "Stack Size Error" ); public :      MYSTACK() : data( new T[StackSize] )      {      } ………. };
  • 65. Rvalue Reference C++ 장점 중 하나인 성능은 향상 되었지만 ^^ C++ 단점 중 하나인 복잡함도 증가 -_-;
  • 66. ‘&’을 사용한 참조는 Lvalue Reference int a = 10; int& refA = a; ‘&&’을 사용한 참조는 Rvalue Reference int&& RrefA = a;
  • 67. RValue Reference의 의해 프로그램의 성능이 좋아지고 낭비가 없어짐.
  • 70.
  • 71. move 생성자와move 대입 연산자는 암묵적으로 만들어지지 않는다.
  • 73. 대입 연산자는 move 연산자보다 우선 한다.
  • 74. 복사가 아닌 메모리 상에서 이동
  • 75.
  • 76. 복사 생성자와Move 생성자의 차이 // 복사 생성자 QuestInfo(const QuestInfo& quest)         : Name(new char[quest.NameLen]), NameLen(quest.NameLen) {       memcpy(Name, quest.Name, quest.NameLen); }   // Move 생성자 QuestInfo(QuestInfo&& quest)         : Name(quest.Name), NameLen(quest.NameLen) {       quest.Name = NULL;       quest.NameLen = 0; }
  • 77. VC++ 10 Beta 1의 STL의 vector
  • 78. std::move NPC npc2; NPC npc3; npc3 = npc2; NPC npc7;         NPC npc8; npc8 = std::move(npc7);
  • 79. Move semsntice에 따른 주의 점 int main() { vector<int> v1; v1.push_back(10); v1.push_back(12); vector<int> v2 = std::move(v1); cout << v1.size() << endl; cout << v2.size() << endl; return 0; }
  • 80. Perfect forwarding void inner(int& i) { } template <typename T> void outer(T& t) { inner(t); } int main() { int a = 5; outer(a); outer(6); return 0; } 컴파일 하면 outer(6)에서 컴파일 에러가 발생 “error C2664: 'outer' : cannot convert parameter 1 from 'int' to 'int &'“ 파라메터에const를 포함하는 함수를 재정의
  • 81. 예제 코드 void inner(int& i) { } template <typename T> void outer(T&& t){ inner(t); } int main() { int a = 5; outer(a); outer(6); return 0; }
  • 83. lambda 간단하게 말하면 익명함수. 람다 식(람다 함수) C#에서는 람다 식 덕분에 Linq의 사용이 간편 C++에서는 STL을 사용할 때와 템플릿을 사용할 때 편리함
  • 84. 예제 코드 structFindDieUser { bool operator() (User& tUser) const { return tUser.IsDie(); } }; vector< User >::iteratorIter; Iter = find_if( Users.begin(), Users.end(), FindDieUser() );
  • 85. 예제 코드 vector< User >::iteratorIter; Iter = find_if( Users.begin(), Users.end(), [](User& tUser) -> bool { return true == tUser.IsDie(); } );
  • 86. 람다 사용 방법 [](파라메터) { 식 } int값에 50을 더한 후 반환하는 람다 함수 [](int x) { return x + 50; }
  • 87. 파라미터와 반환 값이 같을 때 [](파라미터) { 식 } [](int x) { return x + 50; } 파라미터와 반환 값이 다를 때 [](파라미터) -> 반환 값 자료형{ 식 } [](int x) -> bool { return true; } 반환 값이 없을 때 [](파라미터) { 식 } [](int x) { ++x; }
  • 88. 클로져 사용 int TotalMoney1 = 0; for_each( Moneys.begin(), Moneys.end(), [&TotalMoney1](int Money) { TotalMoney1 += Money; } );
  • 89. 클래스의 멤버 함수 호출 클래스 멤버 내의 람다 식은 해당 클래스에서는 friend로 인식 람다 식에서 private 멤버의 접근도 가능
  • 90. 예제 코드 void AllSend() const { for_each( SendPackets.begin(), SendPackets.end(), [this](inti){ Send(i); } ); }
  • 92.
  • 94. CPU의 성능 향상은 Multi Core로 Ghz에서
  • 95.
  • 98.
  • 99. 멀티 스레드? 멀티코어? 그거 먹는건가요? 우걱우걱
  • 101.
  • 103.
  • 104.
  • 106.
  • 107. Main Thread Main Thread task_group1.run( task1) structured_task_group1.run( task1) Thread A task_group1.run( task2) Thread B task_group1.run( task3) Thread A structured_task_group1.run( task2)
  • 108. 초 간단!!! task 사용 방법 ppl.h파일을 포함합니다.#include <ppl.h> Concurrency Runtime의 네임 스페이를 선언합니다.using namespace Concurrency; 태스크 그룹을 정의합니다.structured_task_groupstructured_tasks; 태스크를 정의합니다.auto structured_task1 = make_task([&] { Plus(arraynum1, true); } ); 태스크를 태스크 그룹에 추가한 후 실행합니다.  structured_tasks.run( structured_task1 ); 태스크 그룹에 있는 태스크가 완료될 때까지 기다립니다.structured_tasks.wait();
  • 110. Parallel Algorithms 데이터컬렉션을 대상으로 쉽게 병렬 작업을 할 수 있게 해주는 알고리즘들. C++ STL에서 제공하는 알고리즘과 비슷한 모양과 사용법. paeallel_for, parallel_for_each, parallel_invoke가 구현되어 있음.parallel_accumulate, parallel_partial_sum은 Beta 1에서는 아직 미 구현.
  • 111. parallel_for for 문을 병렬화. for 문과 사용 방법이 흡사하여 쉽게 변환. step 값을 지정하는 버전과 지정하지 않는 버전 두 개가 있음(지정하지 않으면 1). index 조사는 ‘<‘만 지원.
  • 112. 초 간단!!! parallel_for사용 법 ppl.h파일을 포함합니다.#include <ppl.h> Concurrency Runtime의 네임 스페이를 선언합니다.using namespace Concurrency; parallel_for에서 호출할 함수 정의 parallel_for에서 사용할 data set 정의. parallel_for사용.
  • 113. parallel_for_each STL의 for_each알고리즘을 병렬화. for_each와 사용 방법이 같음.
  • 114. 초 간단!!! parallel_for_each사용 법 ppl.h파일을 포함합니다.#include <ppl.h> Concurrency Runtime의 네임 스페이를 선언합니다.using namespace Concurrency; parallel_for_each에서 호출할 함수 정의 parallel_for_each에서 사용할 data set 정의. parallel_for_each사용.
  • 115.
  • 116. parallel_invoke 병렬로 일련의 태스크 실행. 동시 실행할 복수의 독립된 태스크를 실행할 때 좋음. task_group과 비슷하나 사용방법은 더 쉬움그러나 최대 10개의 태스크만 병렬 작업이 가능하다.
  • 117. 초 간단!!! parallel_invoke사용 법 ppl.h파일을 포함합니다.#include <ppl.h> Concurrency Runtime의 네임 스페이를 선언합니다.using namespace Concurrency; 태스크 정의 parallel_invoke사용.
  • 118. parallel objects - combinable 스레드세이프한 오브젝트. 계산 실행한 후 최종 결과에 그 계산 결과를 통합하는 재 사용 가능한 로컬 스트리지 제공. 복수의 스레드 또는 채스크 간에 공유 리소스가 있는 경우 편리. lock-free thread-local sub-computations during parallel algorithms combinable 클래스에 사용할 데이터는 기본 생성자와 복사 생성자를 가지고 있어야 한다. Win32 API의 thread local storage와 비슷. combine, combinable_each제공
  • 119. 예제 코드 #include <algorithm> #include <iostream>   using namespace std; using namespace Concurrency;   int main() { vector<int> values(10); int n = 0; generate(values.begin(), values.end(), [&] { return ++n; } );   combinable<int> sums; parallel_for_each(values.begin(), values.end(), [&](int n) { sums.local() += n; });   int result = sums.combine([](int left, int right) { return left + right; });   cout << "The sum of " << values.front() << " to " << values.back() << " is " << result << "."; }
  • 120. 예제 코드 using namespace std; using namespace Concurrency;   int main() { vector<int> values(10); int n = 0; generate(values.begin(), values.end(), [&] { return ++n; } );   combinable<list<int>> odds; parallel_for_each(values.begin(), values.end(), [&](int n) { if (n % 2 == 1) odds.local().push_back(n); });   list<int> result; odds.combine_each([&](list<int>& local) { local.sort(less<int>()); result.merge(local, less<int>()); });   cout << "The odd elements of the vector are:"; for_each(result.begin(), result.end(), [](int n) { cout << ' ' << n; }); }
  • 121. concurrent containers 병렬 환경에서 스레드 세이프하게 데이터를 저장. concurrent_queue, concurrent_vector, concurrent_hash_map. Beta1에서는 아직 미 구현.
  • 122. MSDN http://msdn.microsoft.com/en-us/library/dd504870(VS.100).aspx Visual C++ Team 블로그 http://blogs.msdn.com/vcblog/default.aspx VSTS 2010 스터디블로그 http://vsts2010.net Parallel Programming in Native Code http://blogs.msdn.com/nativeconcurrency/default.aspx 본인 블로그 http://jacking.tistory.com/