2010-12-13 5 views
6

새로운 Visual Studio 네이티브 Concurrency 런타임 (ConcRT)을 사용하여 약간의 문제가 발생했습니다. 데이터의 크로스 스레드 이동에 이동 의미가 없다는 정당한 이유가 있습니까? 그것들은 모두 복사 의미론입니다. 동시 대기 행렬로 이동할 수 없으며 asend와 함께 이동할 수 없습니다. 동시 큐 구성을 이동할 수도 없습니다.Rvalue refs concurrency

+0

Hehe, CCR에 대한이 시작 페이지에 * 명시 적으로 * 나열되어 있습니다. http://msdn.microsoft.com/en-us/library/dd504870.aspx C + + 0x 개 개선. 이 같은 코드는 잠시 끓습니다. –

+1

@ 한스 : 그것은 일반적으로 "우리는 MSVC10에서 이것을 지원합니다"라는 우호적 인 언급입니다. CCR에는 특별히 그것에 대한 것이 없습니다. – Puppy

+0

방금 ​​CCR의 초보자 용 페이지에 등록 된 것이 재미 있다고 생각했습니다. –

답변

3

이 특정 프레임 워크를 모르지만 일반적으로 스레드 간 대기열의 경우 복사 의미 체계가 있어야합니다.

개체를 만들고 참조/포인터를 가져 와서 큐로 이동한다고 가정 해 보겠습니다. 그런 다음 다른 스레드가 큐에서 큐를 이동합니다. 그런 다음 두 스레드가 동시에 액세스 할 수 있습니다.

일반적인 경우에는 추가 또는 제거가 아닌 복사 만 있으면됩니다 (둘 다 필요 없음). 예 : 카피 - 인 - 아웃 - 아웃 (copy-in move-out)이지만, 이는 의미 상 카피 인 카피 아웃과 동일 할 것이다.

1

rvalue 지원이 ConcRT, 에이전트 및 PPL을 향상시킬 수있는 영역은 많이 있습니다. 큰 소프트웨어 프로젝트처럼 다른 새로운 기능을 사용하는 기능을 만들 때 모든 것을 한 번에 제공 할 수있는 위험이 항상 존재합니다.

PPL은 중요한 발전 이었지만 결코 "완료"라고 말한 적이 없습니다. :-)

ConcRT, PPL 또는 에이전트 라이브러리에서 이동 의미 체계를 지원해야하는 경우에는 connect.microsoft.com에서 제안 사항을 제시하십시오.

관련 문제