스레드 풀 사용 모범 사례
이 항목에서는 스레드 풀 작업에 대한 모범 사례를 설명합니다.
해야 할 일
스레드 풀을 사용하여 앱에서 병렬 작업을 수행하세요.
작업 항목을 사용하여 UI 스레드를 차단하지 않고 확장 작업을 수행하세요.
수명이 짧고 독립적인 작업 항목을 만드세요. 작업 항목은 비동기적으로 실행되며 큐에서 순서에 따라 풀에 제출될 수 있습니다.
Windows.UI.Core.CoreDispatcher를 사용하여 UI 스레드에 업데이트를 보냅니다.
ThreadPoolTimer.CreateTimer 를 Sleep 함수 대신 사용합니다.
사용자 고유의 스레드 관리 시스템을 만드는 대신 스레드 풀을 사용하세요. 스레드 풀은 고급 기능을 사용하여 OS 수준에서 실행되며 프로세스 내 및 시스템 전체에서 디바이스 리소스 및 활동에 따라 동적으로 크기를 조정하도록 최적화됩니다.
C++에서 작업 항목 대리자가 agile 스레딩 모델을 사용하는지 확인하세요 (C++ 대리자는 기본적으로 Agile임).
사용 시 리소스 할당 오류를 허용할 수 없는 경우 미리 할당된 작업 항목을 사용하세요.
금지 사항
기간 값이 <1 밀리초 (0 포함)인 기간 타이머를 생성하지 마십시요. 이로 인해 작업 항목이 단일 샷 타이머로 동작하게 됩니다.
기간 매개 변수에 지정한 시간보다 완료하는 데 시간이 오래 걸리는 정기 작업 항목을 제출하지 마세요.
백그라운드 테스크에서 디스패치된 작업 항목에서 UI 업데이트(알림 메시지 및 알림 제외)를 보내지 마세요. 대신 백그라운드 작업 진행률 및 완료 처리기 - 예시로, IBackgroundTaskInstance.Progress를 사용합니다.
비동기 키워드를 사용하는 작업 항목 처리기를 사용하는 경우 작업 항목에서 전체 상태가 설정되었을 때 처리기의 모든 코드가 실행되었다고 가정하지 마세요. 처리기의 모든 코드가 실행되기 전에 스레드 풀 작업 항목을 전체 상태로 설정할 수 있습니다. 작업 할목이 완료 상태로 설정된 후 처리기 내의 await 키워드를 따르는 코드가 실행 될 수 있습니다.
미리 할당된 작업 항목을 초기화 없이 다시 실행하지 마세요. 정기 작업 항목 만들기