동시성 런타임Concurrency Runtime

C++용 동시성 런타임은 강력하고 확장 가능하며 응답성이 높은 병렬 애플리케이션을 작성하는 데 도움이 됩니다.The Concurrency Runtime for C++ helps you write robust, scalable, and responsive parallel applications. 이는 동시성과 관련된 인프라 세부 정보를 관리할 필요가 없도록 추상화 수준을 높입니다.It raises the level of abstraction so that you do not have to manage the infrastructure details that are related to concurrency. 또한 이러한 동시성 런타임을 사용하여 애플리케이션의 서비스 품질 요구 사항을 충족하는 일정 예약 정책을 지정할 수도 있습니다.You can also use it to specify scheduling policies that meet the quality of service demands of your applications. 다음 리소스는 동시성 런타임 작업을 시작하는 데 도움이 됩니다.Use these resources to help you start working with the Concurrency Runtime.

참조 설명서 는 참조를 참조 하세요.For reference documentation, see Reference.

동시성 런타임은 C++11 기능에 크게 의존하며 보다 최신 C++ 스타일을 채택합니다.The Concurrency Runtime relies heavily on C++11 features and adopts the more modern C++ style. 자세한 내용은 c + +로 다시 시작을 참조 하세요.To learn more, read Welcome Back to C++.

동시성 런타임 기능 선택Choosing Concurrency Runtime Features

아티클Article 설명Description
개요Overview 동시성 런타임이 중요한 이유와 해당 핵심 기능을 설명합니다.Teaches why the Concurrency Runtime is important and describes its key features.
기타 동시성 모델과 비교Comparing to Other Concurrency Models 애플리케이션 요구 사항에 가장 잘 맞는 동시성 모델을 사용할 수 있도록 동시성 런타임과 Windows 스레드 풀, OpenMP 등의 기타 동시성 모델을 비교하는 방법을 보여 줍니다.Shows how the Concurrency Runtime compares to other concurrency models, such as the Windows thread pool and OpenMP, so that you can use the concurrency model that best fits your application requirements.
OpenMP에서 동시성 런타임으로 마이그레이션Migrating from OpenMP to the Concurrency Runtime OpenMP와 동시성 런타임을 비교하고 기존 OpenMP 코드를 동시성 런타임을 사용하도록 마이그레이션하는 방법에 대한 예제를 제공합니다.Compares OpenMP to the Concurrency Runtime and provides examples about how to migrate existing OpenMP code to use the Concurrency Runtime.
PPL(병렬 패턴 라이브러리)Parallel Patterns Library (PPL) 병렬 루프, 작업 및 병렬 컨테이너를 제공하는 PPL을 소개합니다.Introduces you to the PPL, which provides parallel loops, tasks, and parallel containers.
비동기 에이전트 라이브러리Asynchronous Agents Library 비동기 에이전트 및 메시지 전달을 사용하여 데이터 흐름 및 파이프라이닝 작업을 애플리케이션에 쉽게 통합하는 방법을 소개합니다.Introduces you to how to use asynchronous agents and message passing to easily incorporate dataflow and pipelining tasks in your applications.
작업 SchedulerTask Scheduler 동시성 런타임을 사용하는 데스크톱 앱의 성능을 미세 조정할 수 있게 해주는 작업 스케줄러를 소개합니다.Introduces you to the Task Scheduler, which enables you to fine-tune the performance of your desktop apps that uses the Concurrency Runtime.

PPL에서 작업 병렬 처리Task Parallelism in the PPL

아티클Article 설명Description
작업 병렬 처리Task Parallelism

방법: parallel_invoke를 사용 하 여 병렬 정렬 루틴 작성How to: Use parallel_invoke to Write a Parallel Sort Routine

방법: parallel_invoke를 사용 하 여 병렬 작업 실행How to: Use parallel_invoke to Execute Parallel Operations

방법: 지연 후 완료 되는 작업 만들기How to: Create a Task that Completes After a Delay
비동기 코드를 작성하고 병렬 작업을 더 작은 부분으로 분해하는 데 도움이 되는 작업 및 작업 그룹을 설명합니다.Describes tasks and task groups, which can help you to write asynchronous code and decompose parallel work into smaller pieces.
연습: 미래 구현Walkthrough: Implementing Futures 동시성 런타임 기능을 결합하여 더 많은 작업을 수행하는 방법을 보여 줍니다.Demonstrates how to combine Concurrency Runtime features to do something more.
연습: 사용자 인터페이스 스레드에서 작업 제거Walkthrough: Removing Work from a User-Interface Thread MFC 애플리케이션의 UI 스레드에서 수행하는 작업을 작업자 스레드로 이동하는 방법을 보여 줍니다.Shows how to move the work that is performed by the UI thread in a MFC application to a worker thread.
병렬 패턴 라이브러리의 모범 사례Best Practices in the Parallel Patterns Library

동시성 런타임의 일반적인 모범 사례General Best Practices in the Concurrency Runtime
PPL 사용에 대한 팁과 유용한 정보를 제공합니다.Provides tips and best practices for working with the PPL.

PPL에서 데이터 병렬 처리Data Parallelism in the PPL

아티클Article 설명Description
병렬 알고리즘Parallel Algorithms

방법: parallel_for 루프 작성How to: Write a parallel_for Loop

방법: parallel_for_each 루프 작성How to: Write a parallel_for_each Loop

방법: 매핑 수행 및 병렬 작업 줄이기How to: Perform Map and Reduce Operations in Parallel
parallel_for, parallel_for_each, parallel_invoke및 기타 병렬 알고리즘을 설명합니다.Describes parallel_for, parallel_for_each, parallel_invoke, and other parallel algorithms. 데이터 컬렉션이 관련된 데이터 병렬 문제를 해결하려면 병렬 알고리즘을 사용합니다.Use parallel algorithms to solve data parallel problems that involve collections of data.
병렬 컨테이너 및 개체Parallel Containers and Objects

방법: 병렬 컨테이너를 사용 하 여 효율성 향상How to: Use Parallel Containers to Increase Efficiency

방법: 결합을 사용 하 여 성능 향상How to: Use combinable to Improve Performance

방법: 조합 하 여 집합 결합How to: Use combinable to Combine Sets
combinable 클래스와 concurrent_vector, concurrent_queue, concurrent_unordered_map및 기타 병렬 컨테이너를 설명합니다.Describes the combinable class, as well as concurrent_vector, concurrent_queue, concurrent_unordered_map, and other parallel containers. 해당 요소에 스레드로부터 안전한 액세스를 제공하는 컨테이너가 필요한 경우 병렬 컨테이너 및 개체를 사용합니다.Use parallel containers and objects when you require containers that provide thread-safe access to their elements.
병렬 패턴 라이브러리의 모범 사례Best Practices in the Parallel Patterns Library

동시성 런타임의 일반적인 모범 사례General Best Practices in the Concurrency Runtime
PPL 사용에 대한 팁과 유용한 정보를 제공합니다.Provides tips and best practices for working with the PPL.

작업 및 병렬 알고리즘 취소Canceling Tasks and Parallel Algorithms

아티클Article 설명Description
PPL에서의 취소Cancellation in the PPL 취소 요청을 시작하고 취소 요청에 응답하는 방법을 비롯한 PPL에서의 취소 역할을 설명합니다.Describes the role of cancellation in the PPL, including how to initiate and respond to cancellation requests.
방법: 취소를 사용 하 여 병렬 루프 중단How to: Use Cancellation to Break from a Parallel Loop

방법: 예외 처리를 사용 하 여 병렬 루프 중단How to: Use Exception Handling to Break from a Parallel Loop
데이터 병렬 작업을 취소하는 두 가지 방법을 보여 줍니다.Demonstrates two ways to cancel data-parallel work.

유니버설 Windows 플랫폼 앱Universal Windows Platform apps

아티클Article 설명Description
UWP 앱 용 c + +로 비동기 작업 만들기Creating Asynchronous Operations in C++ for UWP Apps 동시성 런타임를 사용 하 여 UWP 앱에서 비동기 작업을 생성할 때 염두에 두어야 하는 몇 가지 주요 사항에 대해 설명 합니다.Describes some of the key points to keep in mind when you use the Concurrency Runtime to produce asynchronous operations in a UWP app.
연습: 작업 및 XML HTTP 요청을 사용 하 여 연결Walkthrough: Connecting Using Tasks and XML HTTP Requests PPL 작업을 및 인터페이스와 결합 하 IXMLHTTPRequest2IXMLHTTPRequest2Callback UWP 앱의 웹 서비스에 HTTP GET 및 POST 요청을 보내는 방법을 보여 줍니다.Shows how to combine PPL tasks with the IXMLHTTPRequest2 and IXMLHTTPRequest2Callback interfaces to send HTTP GET and POST requests to a web service in a UWP app.
Windows 런타임 앱 샘플Windows Runtime app samples Windows 런타임에 대 한 다운로드 가능한 코드 샘플 및 데모 앱이 포함 되어 있습니다.Contains downloadable code samples and demo apps for Windows Runtime.

비동기 에이전트 라이브러리의 데이터 흐름 프로그래밍Dataflow Programming in the Asynchronous Agents Library

아티클Article 설명Description
비동기 에이전트Asynchronous Agents

비동기 메시지 블록Asynchronous Message Blocks

메시지 전달 함수Message Passing Functions

방법: 다양 한 생산자-소비자 패턴 구현How to: Implement Various Producer-Consumer Patterns

방법: 호출 및 변환기 클래스에 작업 함수 제공How to: Provide Work Functions to the call and transformer Classes

방법: 데이터 파이프라인에서 변환기 사용How to: Use transformer in a Data Pipeline

방법: 완료 된 작업 중에서 선택How to: Select Among Completed Tasks

방법: 정기적으로 메시지 보내기How to: Send a Message at a Regular Interval

방법: 메시지 블록 필터 사용How to: Use a Message Block Filter
동시성 런타임에서 데이터 흐름 작업을 수행하기 위한 구성 요소인 비동기 에이전트, 메시지 블록 및 메시지 전달 함수를 설명합니다.Describes asynchronous agents, message blocks, and message-passing functions, which are the building blocks for performing dataflow operations in the Concurrency Runtime.
연습: 에이전트 기반 응용 프로그램 만들기Walkthrough: Creating an Agent-Based Application

연습: 데이터 흐름 에이전트 만들기Walkthrough: Creating a Dataflow Agent
기본 에이전트 기반 애플리케이션을 만드는 방법을 보여 줍니다.Shows how to create basic agent-based applications.
연습: 이미지 처리 네트워크 만들기Walkthrough: Creating an Image-Processing Network 이미지 처리를 수행하는 비동기 메시지 블록의 네트워크를 만드는 방법을 보여 줍니다.Shows how to create a network of asynchronous message blocks that perform image processing.
연습: join을 사용 하 여 교착 상태 방지Walkthrough: Using join to Prevent Deadlock 동시성 런타임을 사용하여 애플리케이션의 교착 상태를 방지하는 방법을 보여 주기 위해 철학자들의 만찬 문제(Dining Philosophers Problem)를 활용합니다.Uses the dining philosophers problem to illustrate how to use the Concurrency Runtime to prevent deadlock in your application.
연습: 사용자 지정 메시지 블록 만들기Walkthrough: Creating a Custom Message Block 들어오는 메시지를 우선 순위별로 정렬하는 사용자 지정 메시지 블록 형식을 만드는 방법을 보여 줍니다.Shows how to create a custom message block type that orders incoming messages by priority.
비동기 에이전트 라이브러리의 모범 사례Best Practices in the Asynchronous Agents Library

동시성 런타임의 일반적인 모범 사례General Best Practices in the Concurrency Runtime
에이전트 사용에 대한 팁과 유용한 정보를 제공합니다.Provides tips and best practices for working with agents.

예외 처리 및 디버깅Exception Handling and Debugging

아티클Article 설명Description
예외 처리Exception Handling 동시성 런타임에서 예외를 사용하는 방법을 설명합니다.Describes how to work with exceptions in the Concurrency Runtime.
병렬 진단 도구Parallel Diagnostic Tools 애플리케이션을 미세 조정하고 동시성 런타임을 가장 효과적으로 사용하는 방법을 보여 줍니다.Teaches you how to fine-tune your applications and make the most effective use of the Concurrency Runtime.

성능 조정Tuning Performance

아티클Article 설명Description
병렬 진단 도구Parallel Diagnostic Tools 애플리케이션을 미세 조정하고 동시성 런타임을 가장 효과적으로 사용하는 방법을 보여 줍니다.Teaches you how to fine-tune your applications and make the most effective use of the Concurrency Runtime.
Scheduler 인스턴스Scheduler Instances

방법: 스케줄러 인스턴스 관리How to: Manage a Scheduler Instance

스케줄러 정책Scheduler Policies

방법: 특정 스케줄러 정책 지정How to: Specify Specific Scheduler Policies

방법: 특정 스케줄러 정책을 사용 하는 에이전트 만들기How to: Create Agents that Use Specific Scheduler Policies
스케줄러 인스턴스 및 스케줄러 정책을 관리하는 방법을 보여 줍니다.Shows how to work with manage scheduler instances and scheduler policies. 데스크톱 앱의 경우 스케줄러 정책을 사용하면 특정 유형의 작업을 특정 규칙과 연결할 수 있습니다.For desktop apps, scheduler policies enable you to associate specific rules with specific types of workloads. 예를 들어 높은 스레드 우선 순위로 일부 작업을 실행하기 위한 스케줄러 인스턴스를 하나 만들고, 기본 스케줄러를 사용하여 보통 스레드 우선 순위로 다른 작업을 실행할 수 있습니다.For example, you can create one scheduler instance to run some tasks at an elevated thread priority and use the default scheduler to run other tasks at the normal thread priority.
일정 그룹Schedule Groups

방법: 일정 그룹을 사용 하 여 실행 순서에 영향을 줍니다.How to: Use Schedule Groups to Influence Order of Execution
일정 그룹을 사용하여 관련 작업을 함께 선호도를 설정하거나 그룹화하는 방법을 보여 줍니다.Demonstrates how to use schedule groups to affinitize, or group, related tasks together. 예를 들어 동일한 프로세서 노드에서 관련 작업을 실행하는 이점이 있는 경우 해당 작업 간에 높은 수준의 국부성이 필요할 수 있습니다.For example, you might require a high degree of locality among related tasks when those tasks benefit from executing on the same processor node.
간단한 작업Lightweight Tasks 간단한 작업이 어떻게 부하 분산 또는 취소가 불필요한 작업을 만드는 데 유용한지 그리고 동시성 런타임과 함께 사용하는 데 적절하도록 기존 코드를 변경하는 데 유용한지를 설명합니다.Explains how lightweight tasks are useful for creating work that does not require load-balancing or cancellation, and how they are also useful for adapting existing code for use with the Concurrency Runtime.
컨텍스트Contexts

방법: 컨텍스트 클래스를 사용 하 여 협조적 세마포 구현How to: Use the Context Class to Implement a Cooperative Semaphore

방법: 초과 구독을 사용 하 여 대기 시간 오프셋How to: Use Oversubscription to Offset Latency
동시성 런타임에서 관리하는 스레드의 동작을 제어하는 방법을 설명합니다.Describes how to control the behavior of the threads that are managed by the Concurrency Runtime.
메모리 관리 함수Memory Management Functions

방법: Alloc 및 Free를 사용 하 여 메모리 성능 개선How to: Use Alloc and Free to Improve Memory Performance
동시성 런타임에서 메모리 할당과 해제를 동시에 수행할 수 있도록 제공하는 메모리 관리 함수를 설명합니다.Describes the memory management functions that the Concurrency Runtime provides to help you allocate and free memory in a concurrent manner.

추가 리소스Additional Resources

아티클Article 설명Description
Hilo의 비동기 프로그래밍 패턴 및 팁(C++ 및 XAML을 사용하는 Windows 스토어 앱)Async programming patterns and tips in Hilo (Windows Store apps using C++ and XAML) 동시성 런타임를 사용 하 여 c + + 및 XAML을 사용 하는 Windows 런타임 앱 인 Hilo에서 비동기 작업을 구현 하는 방법을 알아봅니다.Learn how we used the Concurrency Runtime to implement asynchronous operations in Hilo, a Windows Runtime app using C++ and XAML.
네이티브 코드 블로그의 병렬 프로그래밍Parallel Programming in Native Code blog 동시성 런타임의 병렬 프로그래밍에 대한 자세한 추가 블로그 기사를 제공합니다.Provides additional in-depth blog articles about parallel programming in the Concurrency Runtime.
C++ 및 네이티브 코드 포럼에서 병렬 컴퓨팅Parallel Computing in C++ and Native Code forum 동시성 런타임에 대한 커뮤니티 토론에 참여할 수 있습니다.Enables you to participate in community discussions about the Concurrency Runtime.
병렬 프로그래밍Parallel Programming .NET Framework에서 사용할 수 있는 병렬 프로그래밍 모델에 대해 알려줍니다.Teaches you about the parallel programming model that is available in the .NET Framework.

참고 항목See also

참조Reference