간단한 작업Lightweight Tasks

이 문서에서는 동시성 런타임의 간단한 작업 역할에 대해 설명 합니다.This document describes the role of lightweight tasks in the Concurrency Runtime. 간단한 작업concurrency::Scheduler 또는 concurrency::ScheduleGroup 개체에서 직접 예약 하는 작업입니다.A lightweight task is a task that you schedule directly from a concurrency::Scheduler or concurrency::ScheduleGroup object. 간단한 작업은 Windows API CreateThread 함수에 제공 하는 함수와 유사 합니다.A lightweight task resembles the function that you provide to the Windows API CreateThread function. 따라서 동시성 런타임의 예약 기능을 사용 하도록 기존 코드를 조정 하는 경우 간단한 작업이 유용 합니다.Therefore, lightweight tasks are useful when you adapt existing code to use the scheduling functionality of the Concurrency Runtime. 동시성 런타임 자체는 간단한 작업을 사용 하 여 비동기 에이전트를 예약 하 고 비동기 메시지 블록 간에 메시지를 보냅니다.The Concurrency Runtime itself uses lightweight tasks to schedule asynchronous agents and send messages between asynchronous message blocks.

동시성 런타임은 기본 스케줄러를 제공하므로 애플리케이션에서 스케줄러를 만들 필요가 없습니다.The Concurrency Runtime provides a default scheduler, and therefore you are not required to create one in your application. 작업 스케줄러는 응용 프로그램의 성능을 미세 조정 하는 데 도움이 되므로 동시성 런타임를 처음 접하는 경우 PPL (병렬 패턴 라이브러리) 또는 비동기 에이전트 라이브러리 를 사용 하는 것이 좋습니다.Because the Task Scheduler helps you fine-tune the performance of your applications, we recommend that you start with the Parallel Patterns Library (PPL) or the Asynchronous Agents Library if you are new to the Concurrency Runtime.

간단한 작업은 비동기 에이전트 및 작업 그룹 보다 오버 헤드가 적습니다.Lightweight tasks carry less overhead than asynchronous agents and task groups. 예를 들어, 런타임에서는 간단한 작업이 완료 될 때 사용자에 게 알리지 않습니다.For example, the runtime does not inform you when a lightweight task finishes. 또한 런타임은 간단한 작업에서 throw 된 예외를 catch 하거나 처리 하지 않습니다.In addition, the runtime does not catch or handle exceptions that are thrown from a lightweight task. 예외 처리 및 간단한 작업에 대 한 자세한 내용은 예외 처리를 참조 하세요.For more information about exception handling and lightweight tasks, see Exception Handling.

작업 그룹 및 병렬 알고리즘과 같은 보다 강력한 기능을 사용 하면 복잡 한 작업을 보다 쉽게 사용할 수 있으므로 작업 그룹 및 병렬 알고리즘과 같은 보다 강력한 기능을 사용 하는 것이 좋습니다.For most tasks, we recommend that you use more robust functionality such as task groups and parallel algorithms because they let you more easily break complex tasks into more basic ones. 작업 그룹에 대 한 자세한 내용은 작업 병렬 처리를 참조 하세요.For more information about task groups, see Task Parallelism. 병렬 알고리즘에 대 한 자세한 내용은 병렬 알고리즘을 참조 하세요.For more information about parallel algorithms, see Parallel Algorithms.

간단한 작업을 만들려면 concurrency:: ScheduleGroup:: ScheduleTask, Concurrency:: Currentscheduler:: ScheduleTask또는 concurrency:: Scheduler:: ScheduleTask 메서드를 호출 합니다.To create a lightweight task, call the concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask, or concurrency::Scheduler::ScheduleTask method. 간단한 작업이 완료 될 때까지 기다리려면 부모 스케줄러가 종료 될 때까지 기다리거나 concurrency:: event 개체와 같은 동기화 메커니즘을 사용 합니다.To wait for a lightweight task to finish, wait for the parent scheduler to shut down or use a synchronization mechanism such as a concurrency::event object.

예제Example

간단한 작업을 사용 하기 위해 기존 코드를 조정 하는 방법을 보여 주는 예제는 연습: 간단한 작업을 사용 하기 위해 기존 코드조정을 참조 하세요.For an example that demonstrates how to adapt existing code to use a lightweight task, see Walkthrough: Adapting Existing Code to Use Lightweight Tasks.

참고 항목See also

작업 스케줄러Task Scheduler
연습: 간단한 작업을 사용하기 위해 기존 코드 조정Walkthrough: Adapting Existing Code to Use Lightweight Tasks