Parallel Patterns Library(PPL) - concurrent_vector - 1

VC++ 10 Concurrency Runtime 2009. 11. 29. 08:30 Posted by 알 수 없는 사용자

Visual Stuido 2010 Beta2가 나오면서 제가 기대하고 있었던 병렬 컨테이너가 드디어 구현되었습니다.

 

Concurrency Runtime(이하 ConRT)에는 총 3개의 병렬 컨테이너를 제공합니다. Beta2에서는 모두 다 구현되지는 못하고 concurrent_vector concurrent_queue 두 개가 구현되었습니다. 아직 구현되지 않은 것은 concurrent_hash_map 입니다.

 

세 개의 컨테이너들은 C++ STL의 컨테이너 중에서 가장 자주 사용하는 것으로 vector, deque, hash_map 컨테이너의 병렬 버전이라는 것을 이름을 보면 쉽게 알 수 있을 것입니다.

 

STL에 있는 컨테이너와 비슷한 이름을 가진 것처럼 사용 방법도 기존의 컨테이너와 비슷합니다. 다만 병렬 컨테이너 답게 스레드 세이프하며, 기존의 컨테이너에서 제공하는 일부 기능을 지원하지 못하는 제한도 있습니다.

 

 

몇 회에 나누어서 concurrent_vector concurrent_queue에 대해서 설명해 나가겠습니다.

이번에는 첫 번째로 concurrent_vector에 대한 것입니다.

 

 

 

concurrent_vector란?

 

STL vector와 같이 임의 접근이 가능한 시퀀스 컨테이너입니다. concurrent_vector는 멀티 스레드에서 요소를 추가하던가 특정 요소에 접근해도 안전합니다. 반복자의 접근과 순회는 언제나 멀티 스레드에서 안전해야 하므로 요소를 추가할 때는 기존의 인덱스와 반복자를 무효화 시키면 안됩니다.

 

 

concurrent_vector vector의 차이점


기능

vctor

Concurrent_vector

추가

스레드에 안전하지 않음

스레드에 안전

요소에 접근

스레드에 안전하지 않음

스레드에 안전

반복자 접근 및 순회

스레드에 안전하지 않음

스레드에 안전

push_back

가능

가능

insert

가능

불가능

clear

모두 삭제

모두 삭제

erase

가능

불가능

pop_back

가능

불가능

배열식 접근 예. &v[0]+2

가능

불가능

 

 

grow_by, grow_to_at_least (vector resize와 비슷)는 스레드에 안전

 

 

추가 또는 resize 때 기존 인덱스나 반복자의 위치가 바뀌지 않음

 

 

bool 형은 정의 되지 않았음

 


concurrent_vector에 대한 설명을 이번에는 소개 정도로 끝내고 다음부터는 본격적으로 Concurrent_vector을 어떻게 사용하면 되는지 상세하게 설명해 나가겠습니다.^^


SQL Azure 알아보기(3) –SQL Server 2008 R2 Nov CTP

Cloud 2009. 11. 25. 14:24 Posted by 알 수 없는 사용자

SQL Server 2008 R2 11 CTP가 출시되었는데 SQL Azure를 접근하는데 일반 SQL Server 2008보다는 작업하기가 편해졌습니다.

 

먼저 아래 사이트를 방문해서 계정과 비밀번호, 방화벽 설정을 해두어야 합니다.

 

https://sql.azure.com/

 

방화벽 설정에 대한 내용은 안준석 님의 아래 글을 참고하시면 됩니다.

http://vsts2010.net/155

 

비밀번호는 복잡하게 생성하셔야 하고 계정과 매치가 되지 않아야 합니다. 그렇지 않으면 개체탐색기에서 로그인이 되지 않습니다.

 

SQL Server 2008 R2 Nov CTP SSMS를 열어 개체탐색기로 SQL Azure에 로그인을 해 봅니다.



이전 버전에서는 쿼리로만 접근해야 하지만 R2 버전에서는 개체 탐색기를 통해 손쉽게 접근이 가능합니다. 개체 탐색기를 확장하면 아래와 같은 그림을 볼 수 있습니다.




데이터베이스를 생성해봅니다. 개체탐색기나 쿼리문으로 편한대로 지정할 수 있습니다.

데이터베이스의 최대 사이즈를 지정하면 1GB 일 경우-Web Express Edition, 10GB 일 경우-Business Edition 이 되게 됩니다.

 

개체 탐색기를 이용해서 데이터베이스를 생성해봅니다. 사용자 인터페이스가 아닌 쿼리 창이 열리면서 쿼리로 처리하게 됩니다.




실행해봅니다. 개체 탐색기에서 보면 HJ 라는 데이터베이스가 생긴 것을 알 수 있습니다.



자 그럼 테이블과 데이터를 적재시켜보도록 하겠습니다.

SQL Server 2008 AdventureWorks2008에 있는 테이블 일부의 스크립트를 실행하고 INSERT 구문을 실행했습니다.




쿼리한 결과입니다.

 

SQL Server에서는 그래픽한 인터페이스를 통해 손쉽게 개체를 쿼리하거나 생성 편집이 가능했지만 현재 버전의 R2에서는 SQL Azure에 대한 내용은 쿼리로 대부분이 처리됩니다.

 

 

이제부터 구체적으로 SQL Azure를 활용해서 Near, Far 응용 프로그램으로 이용할 수 있습니다.

다음 블로깅은 VS 2010에서의 SQL AZure를 접근해보도록 하겠습니다.
 

Visual Studio 2010과 Blend Preview for .NET 4 통합 문제

Visual Studio 2010 2009. 11. 23. 17:40 Posted by 알 수 없는 사용자
Visual Studio 2008과 Expression Blend 3를 사용 할 때 Visual Studio의 프로젝트/솔루션의 xaml 파일에서 마우스 오른쪽 버튼 클릭 후 Open in Expression Blend 메뉴를 클릭하면 Blend 3가 열리면서 디자인 작업 하는 방법을 많이 사용하실겁니다.

이번에 PDC09에서 Silverlight 4가 발표되면서 VS2010과 Blend Preview for .NET 4를 설치 하신 분들이 많을텐데 VS2010에서 Open in Expression Blend 메뉴를 클릭하면 Blend Preview for .NET으로 열리는게 아니고 Blend 3로 열리는것을 경험 할 수 있습니다.

기존에 설치된 Blend 3 때문에 그런 줄 알았는데 VS2010과 Blend Preview for .NET 4만 클린 설치 해도 Blend가 실행 되지 않는다고 합니다. 이 경우에는 Open in Expression Blend 메뉴가 나타나지 않는다고 하네요.


결론적으로 Blend 3가 함께 설치된 경우에만 메뉴가 나타나며 그것도 Blend 3로만 연결되어 실행되는 결과가 나타납니다.
이 문제를 해결하기 위해서는 레지스트리를 수정해서 해결 할 수 있습니다.

레지스트리 편집기에서 HKLM\Software\Microsoft\Expression\Blend 항목에서 VS키에서 String 이름을BlendLaunchPath 로 해주고 Expression Blend의 경로를 입력해주면 됩니다.

 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Expression\Blend\VS]
 2: "BlendLaunchPath"="\"c:\\Program Files\\Microsoft Expression\\
     Blend Preview for .NET 4\\Blend.exe\""

x64 시스템의 경우 경로가 조금 다릅니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Expression\Blend\VS

Wow6432Node 아래에 있으니 주의하시고 수정하시기 바랍니다.

수정하기 번거로우면 첨부 파일을 열어서 시스템에 맞는 파일로 실행시켜주면 됩니다.



※ 원문은 Microsoft의 Tim Heuer 블로그에 있습니다.