Share via


스레드 풀 사용 모범 사례

이 항목에서는 스레드 풀 작업에 대한 모범 사례를 설명합니다.

해야 할 일

  • 스레드 풀을 사용하여 앱에서 병렬 작업을 수행하세요.

  • 작업 항목을 사용하여 UI 스레드를 차단하지 않고 확장 작업을 수행하세요.

  • 수명이 짧고 독립적인 작업 항목을 만드세요. 작업 항목은 비동기적으로 실행되며 큐에서 순서에 따라 풀에 제출될 수 있습니다.

  • Windows.UI.Core.CoreDispatcher를 사용하여 UI 스레드에 업데이트를 보냅니다.

  • ThreadPoolTimer.CreateTimerSleep 함수 대신 사용합니다.

  • 사용자 고유의 스레드 관리 시스템을 만드는 대신 스레드 풀을 사용하세요. 스레드 풀은 고급 기능을 사용하여 OS 수준에서 실행되며 프로세스 내 및 시스템 전체에서 디바이스 리소스 및 활동에 따라 동적으로 크기를 조정하도록 최적화됩니다.

  • C++에서 작업 항목 대리자가 agile 스레딩 모델을 사용하는지 확인하세요 (C++ 대리자는 기본적으로 Agile임).

  • 사용 시 리소스 할당 오류를 허용할 수 없는 경우 미리 할당된 작업 항목을 사용하세요.

금지 사항

  • 기간 값이 <1 밀리초 (0 포함)인 기간 타이머를 생성하지 마십시요. 이로 인해 작업 항목이 단일 샷 타이머로 동작하게 됩니다.

  • 기간 매개 변수에 지정한 시간보다 완료하는 데 시간이 오래 걸리는 정기 작업 항목을 제출하지 마세요.

  • 백그라운드 테스크에서 디스패치된 작업 항목에서 UI 업데이트(알림 메시지 및 알림 제외)를 보내지 마세요. 대신 백그라운드 작업 진행률 및 완료 처리기 - 예시로, IBackgroundTaskInstance.Progress를 사용합니다.

  • async 키워드(keyword) 사용 작업 항목 처리기를 이용하는 경우 처리기의 모든 코드가 실행되기 전에 스레드 풀 작업 항목이 완료 상태로 설정될 수 있습니다. 작업 할목이 완료 상태로 설정된 후 처리기 내의 await 키워드를 따르는 코드가 실행 될 수 있습니다.

  • 미리 할당된 작업 항목을 초기화 없이 다시 실행하지 마세요. 정기 작업 항목 만들기