Dreamine.Threading
Dreamine.Threading은 Dreamine 애플리케이션을 위한 핵심 스레딩 추상화 계층입니다.
이 패키지는 Dreamine 기반 애플리케이션에서 사용할 계약, 모델, 스케줄링 정책, Worker Thread 개념, Polling Job 구조, CPU 기반 Cycle Policy, Thread Manager 구조를 정의합니다.
이 패키지는 .NET ThreadPool이나 Task Parallel Library를 대체하려는 목적이 아닙니다.
목적은 Worker Thread, Polling Job, Scheduling, CPU 기반 Delay 정책, Core Assignment 규칙을 Dreamine 내부 경계로 분리하는 것입니다.
목적
Dreamine.Threading은 장비 소프트웨어나 장시간 실행되는 데스크톱 애플리케이션에서 자주 발생하는 스레딩 문제를 줄이기 위해 설계되었습니다.
- 정책 없이 Raw Thread가 과도하게 생성됨
- Polling Loop가 Service, ViewModel 등에 흩어짐
- CPU Core 지정 로직이 비즈니스 로직과 섞임
- Static ThreadManager에 수명 관리가 숨겨짐
- UI, OS, 실행 정책이 강하게 결합됨
- 고속 Polling Loop가 CPU를 제한 없이 점유함
Dreamine.Threading은 이러한 책임을 명확한 계약과 교체 가능한 서비스로 분리합니다.
핵심 개념
Worker Thread
Worker Thread는 실제 실행 루프를 담당합니다.
IDreamineThread
├─ Start
├─ Stop
├─ Pause
├─ Resume
└─ AddJob
Worker Thread는 실행 루프, 수명 상태, 할당된 Job, Core Assignment 정보, Cycle Count를 보유합니다.
Thread Job
Job은 Worker Thread 안에서 실행되는 작업 단위입니다.
IDreamineThreadJob
├─ Name
├─ Interval
├─ ShouldRun
└─ ExecuteAsync
Job을 많이 등록한다고 해서 OS Thread를 같은 수만큼 생성하지 않습니다.
Dedicated Worker와 Overflow Polling
Dreamine.Threading은 CPU Core당 전용 Worker Thread 수를 제한하는 정책을 지원합니다.
예:
Logical Core 수: 2
AutoThreadsPerCore: 2
전용 Worker 용량:
2 Core × 2 Worker = 4 Worker
만약 40개의 Thread Job을 등록하면:
4개 -> 전용 Worker Thread
36개 -> 기존 Worker에 배정되는 Overflow Polling Job
이 방식은 무분별한 Thread 생성을 막고 불필요한 Context Switching을 줄입니다.
0ms 고속 Worker
IntervalMs = 0을 지원합니다.
Dreamine.Threading에서 0ms Interval은 다음 의미입니다.
가능한 한 빠르게 반복 실행
FA/장비 소프트웨어에서는 다음 작업에 필요할 수 있습니다.
- 고속 IO Scan
- Interlock Scan
- Motion 상태 Scan
- Emergency 조건 Scan
- 고속 Sequence 상태 Scan
다만 0ms Loop는 CPU를 공격적으로 점유할 수 있습니다. 그래서 Dreamine.Threading은 두 정책을 분리합니다.
Raw 0ms Worker
→ IntervalMs = 0
→ UseAdaptiveCpuDelay = false
Adaptive 0ms Worker
→ IntervalMs = 0
→ UseAdaptiveCpuDelay = true
Adaptive CPU Delay
AdaptiveCpuCyclePolicy는 프로세스 CPU 사용률이 높아질 때 동적으로 Delay를 추가할 수 있습니다.
예시 정책:
CPU >= 70% -> 5ms Delay
CPU >= 50% -> 3ms Delay
CPU >= 30% -> 1ms Delay
CPU < 30% -> 0ms Delay
이 방식은 FA 스타일의 고속 Loop를 허용하면서도 CPU 폭주를 줄이는 데 목적이 있습니다.
YieldWhenIntervalIsZero
YieldWhenIntervalIsZero는 Delay가 0ms일 때 CPU Yield를 수행할지 결정합니다.
YieldWhenIntervalIsZero = true
→ Delay가 0일 때 Thread.Yield() 호출
YieldWhenIntervalIsZero = false
→ 명시적 Yield 없이 Full-speed Loop 수행
엄격한 FA 고속 Loop에서는 false를 사용할 수 있습니다. 일반 애플리케이션에서는 true가 더 안전합니다.
프로젝트 범위
이 패키지에 포함되는 내용:
- 스레딩 인터페이스
- 스레딩 모델 및 옵션
- Worker Thread 추상화
- Thread Job 추상화
- Core Assignment 모델
- Cycle Context 모델
- Fixed Interval Cycle Policy
- Adaptive CPU Cycle Policy
- Overflow Polling Policy
- Auto Core Allocation 정책
- Thread Manager 및 Scheduler 서비스
이 패키지에 포함하지 않는 내용:
- Windows CPU Affinity 구현
- Windows Timer Resolution 구현
- Windows 프로세스 CPU 사용률 Provider 구현
- WPF 모니터링 UI
이 책임은 별도 패키지에서 처리합니다.
Dreamine.Threading.Windows
Dreamine.Threading.Wpf
패키지 구조
Dreamine.Threading
├─ Interfaces
│ ├─ ICpuUsageProvider.cs
│ ├─ IDreamineThread.cs
│ ├─ IDreamineThreadJob.cs
│ ├─ IDreamineThreadManager.cs
│ ├─ IDreamineThreadScheduler.cs
│ ├─ IThreadAffinityService.cs
│ ├─ IThreadCoreAllocator.cs
│ ├─ IThreadCyclePolicy.cs
│ └─ ITimerResolutionService.cs
│
├─ Models
│ ├─ DreamineThreadCoreAssignment.cs
│ ├─ DreamineThreadCoreMode.cs
│ ├─ DreamineThreadCycleContext.cs
│ ├─ DreamineThreadInfo.cs
│ ├─ DreamineThreadJobOptions.cs
│ ├─ DreamineThreadOptions.cs
│ ├─ DreamineThreadPriority.cs
│ └─ DreamineThreadStatus.cs
│
├─ Policies
│ ├─ AdaptiveCpuCyclePolicy.cs
│ ├─ FixedIntervalCyclePolicy.cs
│ └─ OverflowPollingPolicy.cs
│
├─ Allocators
│ └─ AutoCoreAllocator.cs
│
└─ Services
├─ DreamineThread.cs
├─ DreamineThreadJob.cs
├─ DreamineThreadManager.cs
└─ DreamineThreadScheduler.cs
기본 사용 예시
using Dreamine.Threading.Allocators;
using Dreamine.Threading.Models;
using Dreamine.Threading.Policies;
using Dreamine.Threading.Services;
var manager = new DreamineThreadManager(
new AutoCoreAllocator(2),
new FixedIntervalCyclePolicy(),
new DreamineThreadScheduler());
for (var i = 0; i < 40; i++)
{
var index = i;
manager.Register(
new DreamineThreadOptions
{
Name = $"Job-{index}",
CoreMode = DreamineThreadCoreMode.Auto,
AutoThreadsPerCore = 2,
IntervalMs = 10,
OverflowPollingIntervalMs = 100
},
token =>
{
Console.WriteLine($"Job {index} tick");
return ValueTask.CompletedTask;
});
}
Logical Core가 2개이고 AutoThreadsPerCore = 2라면 최대 4개의 전용 Worker Thread가 생성됩니다. 나머지 Job은 Overflow Polling Job으로 기존 Worker에 배정됩니다.
고속 Job과 일반 Job 예시
// Adaptive CPU Delay가 적용되는 고속 Job.
for (var i = 0; i < 5; i++)
{
var index = i;
threadManager.Register(
new DreamineThreadOptions
{
Name = $"HighMonitor-Adaptive-{index:00}",
Priority = DreamineThreadPriority.High,
IntervalMs = 0,
CoreMode = DreamineThreadCoreMode.Auto,
AutoThreadsPerCore = 2,
OverflowPollingIntervalMs = 10,
AutoStart = true,
UseHighPrecisionTimer = false,
YieldWhenIntervalIsZero = false,
UseAdaptiveCpuDelay = true
},
token => ValueTask.CompletedTask);
}
// Adaptive CPU Delay가 없는 고속 Job.
for (var i = 0; i < 5; i++)
{
var index = i;
threadManager.Register(
new DreamineThreadOptions
{
Name = $"HighMonitor-Raw-{index:00}",
Priority = DreamineThreadPriority.High,
IntervalMs = 0,
CoreMode = DreamineThreadCoreMode.Auto,
AutoThreadsPerCore = 2,
OverflowPollingIntervalMs = 10,
AutoStart = true,
UseHighPrecisionTimer = false,
YieldWhenIntervalIsZero = false,
UseAdaptiveCpuDelay = false
},
token => ValueTask.CompletedTask);
}
// 일반 Polling Job.
for (var i = 0; i < 30; i++)
{
var index = i;
threadManager.Register(
new DreamineThreadOptions
{
Name = $"NormalThread-{index:00}",
Priority = DreamineThreadPriority.Normal,
IntervalMs = 100,
CoreMode = DreamineThreadCoreMode.Auto,
AutoThreadsPerCore = 2,
OverflowPollingIntervalMs = 500,
AutoStart = true,
UseHighPrecisionTimer = false,
YieldWhenIntervalIsZero = true,
UseAdaptiveCpuDelay = true
},
token => ValueTask.CompletedTask);
}
Logical Core가 16개인 환경의 기대 동작:
AutoThreadsPerCore = 2
전용 Worker 용량 = 16 × 2 = 32
전체 Job = 40
전용 Worker = 32
Overflow Job = 8
런타임 검증 예시
다음 구성으로 샘플 검증을 수행했습니다.
High Adaptive Job: 5
High Raw Job: 5
Normal Job: 30
Total Job: 40
관찰된 동작:
Raw 0ms Worker
→ Cycle Count가 매우 빠르게 증가
→ Full-speed 실행
Adaptive 0ms Worker
→ Cycle Count가 낮게 유지
→ CPU 사용률 기반 Delay 적용
Normal 100ms Worker
→ 안정적인 저주기 Polling
전체 CPU 사용률
→ 샘플 실행 기준 약 25~30%대 유지
이 검증으로 Core Assignment, Overflow Polling, 0ms 고속 실행, Adaptive CPU Delay, WPF Monitoring이 함께 동작함을 확인했습니다.
설계 원칙
Dreamine.Threading은 다음 원칙을 따릅니다.
- Thread 실행과 Job Scheduling 분리
- Core Allocation과 Worker 실행 분리
- Platform API와 Core 추상화 분리
- CPU 사용률 측정과 Thread 실행 분리
- Static ThreadManager 지양
- 생성자에서 Thread 시작 금지
- 테스트 가능하고 교체 가능한 구성 요소 유지
- WPF 및 Windows 전용 코드는 Core 패키지 밖에 위치
- FA 스타일 0ms 고속 루프를 허용하되 Adaptive CPU 보호 정책 지원
관련 패키지
Dreamine.Threading
Dreamine.Threading.Windows
Dreamine.Threading.Wpf
Dreamine.Logging
상태
현재 이 패키지는 초기 구조 단계이며, 1차 런타임 검증을 완료했습니다.
구현됨:
- Worker Thread / Job 분리
- Auto Core Allocation
- Core당 Thread 수 제한
- Overflow Polling Job 배정
- 0ms 고속 Loop 지원
- Adaptive CPU Delay 정책
- Cycle Context 지원
- Logging 친화적인 Thread Manager 구조
- 별도 WPF 패키지를 통한 Monitor 연동
향후 계획:
- DMContainer 기반 간소화 등록 API
- Summary Metrics 추가
- Round-Robin Overflow Scheduler
- Job 단위 Monitoring 통계
- Core 0 제외 옵션
- Async Queue 기반 Dispatching
- Lifecycle Diagnostics 개선
License
MIT License
구조 다이어그램
classDiagram
class IDispatcher {
<<interface>>
+InvokeAsync(Action) Task
+InvokeAsync~T~(Func~T~) Task~T~
+CheckAccess() bool
+BeginInvoke(Action) void
}
class DreamineTaskFactory {
<<static>>
+StartBackground(Action) Task
+StartBackground~T~(Func~T~) Task~T~
+CreatePeriodic(Action, int) IPeriodicTask
+Debounce(Action, int) Action
+Throttle(Action, int) Action
}
class IPeriodicTask {
<<interface>>
+Start() void
+Stop() void
+IsRunning bool
+IntervalMs int
}
class PeriodicTask {
-Action _action
-CancellationTokenSource _cts
+Start() void
+Stop() void
+IsRunning bool
}
class AsyncLock {
+AcquireAsync() Task~IDisposable~
}
IPeriodicTask <|.. PeriodicTask
DreamineTaskFactory --> PeriodicTask
DreamineTaskFactory --> AsyncLockAPI 문서
타입
\if KO CPU 사용률에 따라 실행 지연을 늘리는 적응형 주기 정책을 제공합니다. \endif \if EN Provides an adaptive cycle policy that increases execution delay based on CPU usage. \endif
\if KO 코어별 용량 정책을 사용해 Dreamine 작업자 스레드에 CPU 코어를 자동 할당합니다. \endif \if EN Allocates CPU cores to Dreamine worker threads using an automatic per-core capacity policy. \endif
\if KO 기본 Dreamine 작업자 스레드 구현을 제공합니다. \endif \if EN Provides the default Dreamine worker-thread implementation. \endif
\if KO Dreamine 작업자 스레드의 CPU 코어 할당 결과를 나타냅니다. \endif \if EN Represents the CPU core assignment result for a Dreamine worker thread. \endif
\if KO Dreamine 스레드가 CPU 코어에 할당되는 방식을 정의합니다. \endif \if EN Defines how a Dreamine thread is assigned to CPU cores. \endif
\if KO Dreamine 스레드 주기의 런타임 컨텍스트 정보를 나타냅니다. \endif \if EN Represents runtime context information for a Dreamine thread cycle. \endif
\if KO Dreamine 작업자 스레드 상태의 불변 스냅샷을 나타냅니다. \endif \if EN Represents an immutable snapshot of a Dreamine worker-thread state. \endif
\if KO Dreamine 스레딩 서비스 등록 옵션을 제공합니다. \endif \if EN Provides configuration options for Dreamine threading-service registration. \endif
\if KO Dreamine 스레딩 핵심 서비스를 전역 컨테이너에 등록하는 도우미를 제공합니다. \endif \if EN Provides helpers that register Dreamine threading core services in the global container. \endif
\if KO 기본 Dreamine 스레드 작업 구현을 제공합니다. \endif \if EN Provides the default Dreamine thread-job implementation. \endif
\if KO Dreamine 스레드 작업 생성 옵션을 나타냅니다. \endif \if EN Represents options used to create a Dreamine thread job. \endif
\if KO 기본 Dreamine 작업자 스레드 관리자 구현을 제공합니다. \endif \if EN Provides the default Dreamine worker-thread manager implementation. \endif
\if KO Dreamine 작업자 스레드 생성 옵션을 나타냅니다. \endif \if EN Represents options used to create a Dreamine worker thread. \endif
\if KO Dreamine 스레드의 우선순위 수준을 정의합니다. \endif \if EN Defines the priority level of a Dreamine thread. \endif
\if KO 오버플로 폴링 작업을 위한 기본 스케줄링을 제공합니다. \endif \if EN Provides default scheduling for overflow polling jobs. \endif
\if KO Dreamine 스레드의 수명 주기 상태를 정의합니다. \endif \if EN Defines the lifecycle status of a Dreamine thread. \endif
\if KO Dreamine 작업자 스레드를 위한 고정 간격 주기 정책을 제공합니다. \endif \if EN Provides a fixed-interval cycle policy for Dreamine worker threads. \endif
\if KO 스레딩 서비스에 CPU 토폴로지 정보를 제공하는 계약을 정의합니다. \endif \if EN Defines a contract that provides CPU topology information to threading services. \endif
\if KO CPU 사용률 정보를 제공하는 서비스 계약을 정의합니다. \endif \if EN Defines a service contract that provides CPU usage information. \endif
\if KO Dreamine 작업자 스레드의 제어 및 진단 계약을 정의합니다. \endif \if EN Defines the control and diagnostic contract for a Dreamine worker thread. \endif
\if KO Dreamine 작업자 스레드가 실행하는 작업 계약을 정의합니다. \endif \if EN Defines a job contract executed by a Dreamine worker thread. \endif
\if KO Dreamine 작업자 스레드와 폴링 작업을 생성하고 제어하는 관리자 계약을 정의합니다. \endif \if EN Defines a manager contract that creates and controls Dreamine worker threads and polling jobs. \endif
\if KO 폴링 작업을 작업자 스레드에 할당하는 스케줄러 계약을 정의합니다. \endif \if EN Defines a scheduler contract that assigns polling jobs to worker threads. \endif
\if KO 현재 스레드에 CPU 선호도를 적용하는 플랫폼 서비스 계약을 정의합니다. \endif \if EN Defines a platform-service contract that applies CPU affinity to the current thread. \endif
\if KO 작업자 스레드를 CPU 코어에 할당하는 서비스 계약을 정의합니다. \endif \if EN Defines a service contract that assigns worker threads to CPU cores. \endif
\if KO 작업자 스레드 주기 사이의 지연을 결정하는 정책 계약을 정의합니다. \endif \if EN Defines a policy contract that determines the delay between worker-thread cycles. \endif
\if KO 시스템 타이머 해상도를 제어하는 플랫폼 서비스 계약을 정의합니다. \endif \if EN Defines a platform-service contract that controls system timer resolution. \endif
\if KO 오버플로 작업을 위한 폴링 간격 정책을 제공합니다. \endif \if EN Provides a polling-interval policy for overflow jobs. \endif
AdaptiveCpuCyclePolicy
\if KO 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of . \endif
cpuUsageProvider— \if KO 전체 CPU 사용률을 제공할 서비스입니다. \endif \if EN The service that provides total CPU usage. \endif\if KO 오버플로·고정 간격·CPU 사용률 규칙에 따라 다음 주기 지연을 계산합니다. \endif \if EN Calculates the next cycle delay from overflow, fixed-interval, and CPU-usage rules. \endif
options— \if KO 간격 및 적응형 지연 설정입니다. \endif \if EN The interval and adaptive-delay settings. \endifassignment— \if KO 현재 코어 및 오버플로 할당입니다. \endif \if EN The current core and overflow assignment. \endifcontext— \if KO 현재 주기 컨텍스트이며 계약 검증을 위해 필요합니다. \endif \if EN The current cycle context, required for contract validation. \endif반환: \if KO 다음 주기 전 대기할 0~5밀리초 또는 구성된 간격입니다. \endif \if EN A zero-to-five millisecond adaptive delay or the configured interval. \endif
\if KO cpu Usage Provider 값을 보관합니다. \endif \if EN Stores the cpu usage provider value. \endif
AutoCoreAllocator
\if KO 현재 환경의 논리 프로세서 수로 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of using the environment's logical processor count. \endif
\if KO 지정한 논리 코어 수로 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of with the specified logical-core count. \endif
logicalCoreCount— \if KO 사용할 논리 CPU 코어 수이며 0 이하는 1로 보정됩니다. \endif \if EN The logical CPU core count; values at or below zero are normalized to one. \endif\if KO 정규화된 스레드 옵션의 코어 모드에 따라 코어 할당을 생성합니다. \endif \if EN Creates a core assignment according to the normalized thread option's core mode. \endif
options— \if KO 코어 모드와 용량 설정을 포함하는 스레드 옵션입니다. \endif \if EN The thread options containing core mode and capacity settings. \endif반환: \if KO 비선호도, 수동, 자동 또는 오버플로 코어 할당입니다. \endif \if EN A no-affinity, manual, automatic, or overflow core assignment. \endif
\if KO 사용 카운트가 가장 낮은 코어를 선택하고 용량이 가득 차면 오버플로 할당을 반환합니다. \endif \if EN Selects the least-used core and returns an overflow assignment when all core capacity is full. \endif
options— \if KO 코어당 최대 스레드 수를 포함하는 정규화된 옵션입니다. \endif \if EN The normalized options containing maximum threads per core. \endif반환: \if KO 자동 전용 또는 오버플로 할당입니다. \endif \if EN An automatic dedicated or overflow assignment. \endif
\if KO 유효성을 검사한 수동 코어 할당을 만들고 사용 카운트를 증가시킵니다. \endif \if EN Creates a validated manual core assignment and increments its usage count. \endif
options— \if KO 수동 코어 인덱스를 포함하는 정규화된 옵션입니다. \endif \if EN The normalized options containing the manual core index. \endif반환: \if KO 수동 전용 할당이며 인덱스가 없으면 비선호도 할당입니다. \endif \if EN A manual dedicated assignment, or a no-affinity assignment when no index is specified. \endif
\if KO 전용 코어 할당의 사용 카운트를 감소시킵니다. \endif \if EN Decrements the usage count for a dedicated core assignment. \endif
assignment— \if KO 해제할 코어 할당입니다. \endif \if EN The core assignment to release. \endif\if KO assigned Counts 값을 보관합니다. \endif \if EN Stores the assigned counts value. \endif
\if KO logical Core Count 값을 보관합니다. \endif \if EN Stores the logical core count value. \endif
\if KO sync Root 값을 보관합니다. \endif \if EN Stores the sync root value. \endif
DreamineThread
\if KO 지정한 옵션, 코어 할당 및 실행 서비스를 사용해 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of using the specified options, core assignment, and execution services. \endif
options— \if KO 정규화할 작업자 스레드 옵션입니다. \endif \if EN The worker-thread options to normalize. \endifcoreAssignment— \if KO 적용할 CPU 코어 할당입니다. \endif \if EN The CPU core assignment to apply. \endifcyclePolicy— \if KO 각 실행 주기 뒤의 지연을 결정할 정책입니다. \endif \if EN The policy that determines delay after each execution cycle. \endifaffinityService— \if KO 선택적 CPU 선호도 서비스입니다. \endif \if EN The optional CPU-affinity service. \endiftimerResolutionService— \if KO 선택적 타이머 해상도 서비스입니다. \endif \if EN The optional timer-resolution service. \endiflogger— \if KO 선택적 진단 로거입니다. \endif \if EN The optional diagnostic logger. \endif\if KO 실행 주기에 참여할 작업을 스레드 안전하게 추가합니다. \endif \if EN Adds a job to participate in execution cycles in a thread-safe manner. \endif
job— \if KO 추가할 스레드 작업입니다. \endif \if EN The thread job to add. \endif\if KO 작업자 스레드를 동기적으로 중지하고 대기 핸들을 정리합니다. \endif \if EN Stops the worker thread synchronously and disposes its wait handle. \endif
\if KO 현재 시각에 실행 기한이 된 작업을 등록 순서대로 동기 실행합니다. \endif \if EN Executes jobs due at the current time synchronously in registration order. \endif
cancellationToken— \if KO 각 작업 실행에 전달할 취소 토큰입니다. \endif \if EN The cancellation token passed to each job execution. \endif\if KO 현재 작업자 상태와 실행 통계를 불변 스냅샷으로 반환합니다. \endif \if EN Returns current worker state and execution statistics as an immutable snapshot. \endif
반환: \if KO 현재 스냅샷입니다. \endif \if EN The current snapshot. \endif
\if KO Dreamine 우선순위를 시스템 값으로 매핑합니다. \endif \if EN Maps a Dreamine priority to a system value. \endif
priority— \if KO 매핑할 Dreamine 스레드 우선순위입니다. \endif \if EN The Dreamine thread priority to map. \endif반환: \if KO 대응하는 시스템 스레드 우선순위입니다. \endif \if EN The corresponding system thread priority. \endif
\if KO 실행 중인 작업자 스레드의 주기 진행을 일시 정지합니다. \endif \if EN Pauses cycle progression for a running worker thread. \endif
\if KO 일시 정지된 작업자 스레드의 주기 진행을 재개합니다. \endif \if EN Resumes cycle progression for a paused worker thread. \endif
\if KO 작업자 스레드에서 타이머·선호도·작업 실행·주기 지연을 관리하는 주 루프를 실행합니다. \endif \if EN Runs the worker-thread main loop that manages timer resolution, affinity, jobs, and cycle delay. \endif
cancellationToken— \if KO 주 루프와 일시 정지 대기를 중지하는 토큰입니다. \endif \if EN A token that stops the main loop and pause wait. \endif\if KO 백그라운드 작업자 스레드를 생성하고 실행을 시작합니다. \endif \if EN Creates the background worker thread and starts execution. \endif
\if KO 작업자 스레드 중지를 요청하고 종료 대기를 동기적으로 차단합니다. \endif \if EN Requests worker-thread shutdown and blocks synchronously during the join wait. \endif
\if KO 취소를 요청하고 구성된 제한 시간 동안 작업자 스레드 종료를 비동기로 기다립니다. \endif \if EN Requests cancellation and asynchronously waits for worker-thread exit for the configured timeout. \endif
반환: \if KO 중지와 상태 정리를 나타내는 값 작업입니다. \endif \if EN A value task representing shutdown and state cleanup. \endif
\if KO 작업자 스레드가 아직 정리되지 않았는지 확인합니다. \endif \if EN Verifies that the worker thread has not been disposed. \endif
\if KO 작업자 스레드의 CPU 코어 할당을 가져옵니다. \endif \if EN Gets the worker thread's CPU core assignment. \endif
\if KO 이 작업자에 할당된 작업 수를 스레드 안전하게 가져옵니다. \endif \if EN Gets the number of jobs assigned to this worker in a thread-safe manner. \endif
\if KO 정규화된 작업자 스레드 이름을 가져옵니다. \endif \if EN Gets the normalized worker-thread name. \endif
\if KO 정규화된 작업자 스레드 옵션을 가져옵니다. \endif \if EN Gets the normalized worker-thread options. \endif
\if KO 현재 작업자 스레드 수명 주기 상태를 가져옵니다. \endif \if EN Gets the current worker-thread lifecycle status. \endif
\if KO affinity Service 값을 보관합니다. \endif \if EN Stores the affinity service value. \endif
\if KO cancellation Token Source 값을 보관합니다. \endif \if EN Stores the cancellation token source value. \endif
\if KO cycle Count 값을 보관합니다. \endif \if EN Stores the cycle count value. \endif
\if KO cycle Policy 값을 보관합니다. \endif \if EN Stores the cycle policy value. \endif
\if KO disposed 값을 보관합니다. \endif \if EN Stores the disposed value. \endif
\if KO jobs 값을 보관합니다. \endif \if EN Stores the jobs value. \endif
\if KO last Error Message 값을 보관합니다. \endif \if EN Stores the last error message value. \endif
\if KO logger 값을 보관합니다. \endif \if EN Stores the logger value. \endif
\if KO pause Event 값을 보관합니다. \endif \if EN Stores the pause event value. \endif
\if KO started At 값을 보관합니다. \endif \if EN Stores the started at value. \endif
\if KO status 값을 보관합니다. \endif \if EN Stores the status value. \endif
\if KO stopped At 값을 보관합니다. \endif \if EN Stores the stopped at value. \endif
\if KO sync Root 값을 보관합니다. \endif \if EN Stores the sync root value. \endif
\if KO thread 값을 보관합니다. \endif \if EN Stores the thread value. \endif
\if KO timer Resolution Service 값을 보관합니다. \endif \if EN Stores the timer resolution service value. \endif
DreamineThreadCoreAssignment
\if KO 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of . \endif
coreIndex— \if KO 할당된 CPU 코어 인덱스이며 코어가 없으면 입니다. \endif \if EN The assigned CPU core index, or when no core is assigned. \endifuseAffinity— \if KO CPU 선호도를 적용할지 여부입니다. \endif \if EN Whether CPU affinity should be applied. \endifisOverflowPolling— \if KO 오버플로 폴링 할당인지 여부입니다. \endif \if EN Whether the assignment is for overflow polling. \endif\if KO 전용 CPU 코어 할당을 생성합니다. \endif \if EN Creates a dedicated CPU core assignment. \endif
coreIndex— \if KO 할당할 CPU 코어 인덱스입니다. \endif \if EN The CPU core index to assign. \endifuseAffinity— \if KO 해당 코어에 선호도를 적용할지 여부입니다. \endif \if EN Whether affinity should be applied to that core. \endif반환: \if KO 생성된 전용 할당입니다. \endif \if EN The created dedicated assignment. \endif
\if KO CPU 선호도나 전용 코어가 없는 할당을 생성합니다. \endif \if EN Creates an assignment without CPU affinity or a dedicated core. \endif
반환: \if KO 생성된 비선호도 할당입니다. \endif \if EN The created no-affinity assignment. \endif
\if KO 전용 작업자 없이 실행할 오버플로 폴링 할당을 생성합니다. \endif \if EN Creates an overflow polling assignment without a dedicated worker. \endif
반환: \if KO 생성된 오버플로 할당입니다. \endif \if EN The created overflow assignment. \endif
\if KO 할당된 CPU 코어 인덱스를 가져옵니다. \endif \if EN Gets the assigned CPU core index. \endif
\if KO 이 할당이 전용 작업자 스레드를 가지는지 여부를 가져옵니다. \endif \if EN Gets whether this assignment has a dedicated worker thread. \endif
\if KO 이 할당이 오버플로 폴링 작업을 나타내는지 여부를 가져옵니다. \endif \if EN Gets whether this assignment represents an overflow polling job. \endif
\if KO CPU 선호도를 적용해야 하는지 여부를 가져옵니다. \endif \if EN Gets whether CPU affinity should be applied. \endif
DreamineThreadCoreMode
\if KO CPU 코어 할당을 자동으로 선택합니다. \endif \if EN CPU core assignment is selected automatically. \endif
\if KO CPU 코어 할당을 수동으로 선택합니다. \endif \if EN CPU core assignment is selected manually. \endif
\if KO CPU 선호도를 적용하지 않습니다. \endif \if EN No CPU affinity is applied. \endif
DreamineThreadCycleContext
\if KO 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of . \endif
threadName— \if KO 작업자 스레드 이름이며 비어 있으면 기본 이름을 사용합니다. \endif \if EN The worker-thread name; a default name is used when it is blank. \endifcycleCount— \if KO 현재 누적 주기 수입니다. \endif \if EN The current cumulative cycle count. \endifjobCount— \if KO 할당된 작업 수입니다. \endif \if EN The number of assigned jobs. \endifcoreIndex— \if KO 할당된 CPU 코어 인덱스입니다. \endif \if EN The assigned CPU core index. \endifisOverflowPolling— \if KO 오버플로 폴링 주기인지 여부입니다. \endif \if EN Whether the cycle is for overflow polling. \endiftimestamp— \if KO 현재 주기 타임스탬프입니다. \endif \if EN The current cycle timestamp. \endif\if KO 할당된 CPU 코어 인덱스를 가져옵니다. \endif \if EN Gets the assigned CPU core index. \endif
\if KO 현재 누적 주기 수를 가져옵니다. \endif \if EN Gets the current cumulative cycle count. \endif
\if KO 이 주기가 오버플로 폴링용인지 여부를 가져옵니다. \endif \if EN Gets whether this cycle is for overflow polling. \endif
\if KO 작업자에 할당된 작업 수를 가져옵니다. \endif \if EN Gets the number of jobs assigned to the worker. \endif
\if KO 작업자 스레드 이름을 가져옵니다. \endif \if EN Gets the worker thread name. \endif
\if KO 현재 주기 타임스탬프를 가져옵니다. \endif \if EN Gets the current cycle timestamp. \endif
DreamineThreadInfo
\if KO 클래스의 새 스냅샷을 초기화합니다. \endif \if EN Initializes a new snapshot instance of . \endif
name— \if KO 작업자 스레드 이름입니다. \endif \if EN The worker-thread name. \endifstatus— \if KO 현재 수명 주기 상태입니다. \endif \if EN The current lifecycle status. \endifpriority— \if KO 스레드 우선순위입니다. \endif \if EN The thread priority. \endifintervalMs— \if KO 밀리초 단위 실행 간격입니다. \endif \if EN The execution interval in milliseconds. \endifcoreIndex— \if KO 할당된 CPU 코어 인덱스입니다. \endif \if EN The assigned CPU core index. \endifuseAffinity— \if KO CPU 선호도 활성화 여부입니다. \endif \if EN Whether CPU affinity is enabled. \endifjobCount— \if KO 할당된 작업 수입니다. \endif \if EN The number of assigned jobs. \endifcycleCount— \if KO 완료된 주기 수입니다. \endif \if EN The number of completed cycles. \endifstartedAt— \if KO 마지막 시작 시각입니다. \endif \if EN The most recent start time. \endifstoppedAt— \if KO 마지막 중지 시각입니다. \endif \if EN The most recent stop time. \endiflastErrorMessage— \if KO 마지막 오류 메시지입니다. \endif \if EN The most recent error message. \endif\if KO 할당된 CPU 코어 인덱스를 가져옵니다. \endif \if EN Gets the assigned CPU core index. \endif
\if KO 완료된 실행 주기 수를 가져옵니다. \endif \if EN Gets the number of completed cycles. \endif
\if KO 밀리초 단위 작업자 실행 간격을 가져옵니다. \endif \if EN Gets the worker-thread interval in milliseconds. \endif
\if KO 작업자에 할당된 작업 수를 가져옵니다. \endif \if EN Gets the number of jobs assigned to the worker. \endif
\if KO 마지막 예외 메시지를 가져옵니다. \endif \if EN Gets the most recent exception message. \endif
\if KO 작업자 스레드 이름을 가져옵니다. \endif \if EN Gets the worker-thread name. \endif
\if KO 작업자 스레드 우선순위를 가져옵니다. \endif \if EN Gets the worker-thread priority. \endif
\if KO 마지막 시작 시각을 가져옵니다. \endif \if EN Gets the most recent start time. \endif
\if KO 작업자 스레드 상태를 가져옵니다. \endif \if EN Gets the worker-thread status. \endif
\if KO 마지막 중지 시각을 가져옵니다. \endif \if EN Gets the most recent stop time. \endif
\if KO CPU 선호도가 활성화되었는지 여부를 가져옵니다. \endif \if EN Gets whether CPU affinity is enabled. \endif
DreamineThreadingOptions
\if KO 기존 서비스 등록을 덮어쓸 수 있는지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether an existing service registration can be overwritten. \endif
\if KO Windows 전용 스레딩 서비스를 등록할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether Windows-specific threading services are registered. \endif
\if KO 적응형 CPU 주기 정책을 사용할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether the adaptive CPU cycle policy is used. \endif
DreamineThreadingRegistration
\if KO 지정한 옵션과 선택적 CPU 사용률 공급자로 스레딩 핵심 서비스를 등록합니다. \endif \if EN Registers threading core services using the specified options and optional CPU-usage provider. \endif
configure— \if KO 등록 옵션을 수정할 선택적 구성 대리자입니다. \endif \if EN The optional delegate that modifies registration options. \endif\if KO 선택적 구성 대리자를 적용해 Dreamine 스레딩 핵심 서비스를 등록합니다. \endif \if EN Registers Dreamine threading core services after applying an optional configuration delegate. \endif
options— \if KO 서비스 등록과 주기 정책 선택 옵션입니다. \endif \if EN The service-registration and cycle-policy selection options. \endifcpuUsageProvider— \if KO 적응형 주기 정책에 사용할 선택적 CPU 사용률 공급자입니다. \endif \if EN The optional CPU-usage provider used by the adaptive cycle policy. \endif\if KO 전역 컨테이너에 등록된 선택적 서비스를 확인합니다. \endif \if EN Resolves an optional service registered in the global container. \endif
반환: \if KO 등록된 서비스이며 등록되지 않았으면 입니다. \endif \if EN The registered service, or when it is not registered. \endif
DreamineThreadJob
\if KO 지정한 옵션과 비동기 대리자로 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of with the specified options and asynchronous delegate. \endif
options— \if KO 정규화할 작업 옵션입니다. \endif \if EN The job options to normalize. \endifaction— \if KO 작업 실행 시 호출할 비동기 대리자입니다. \endif \if EN The asynchronous delegate invoked when the job executes. \endif\if KO 작업 대리자를 실행하고 성공 통계 또는 마지막 예외를 갱신합니다. \endif \if EN Executes the job delegate and updates success statistics or the last exception. \endif
cancellationToken— \if KO 작업 대리자에 전달할 취소 토큰입니다. \endif \if EN The cancellation token passed to the job delegate. \endif반환: \if KO 비동기 작업 실행을 나타내는 값 작업입니다. \endif \if EN A value task representing asynchronous job execution. \endif
\if KO 활성 상태와 마지막 성공 실행 시각을 기준으로 현재 작업 실행 여부를 판단합니다. \endif \if EN Determines whether the job should run from its enabled state and last successful execution time. \endif
now— \if KO 실행 간격을 평가할 현재 시각입니다. \endif \if EN The current time used to evaluate the execution interval. \endif반환: \if KO 활성화되어 있고 최초 실행이거나 간격이 경과했으면 입니다. \endif \if EN when enabled and either never executed or its interval has elapsed. \endif
\if KO 성공적으로 완료된 실행 횟수를 원자적으로 가져옵니다. \endif \if EN Atomically gets the number of successfully completed executions. \endif
\if KO 마지막 실패에서 발생한 예외를 가져옵니다. \endif \if EN Gets the exception raised by the most recent failed execution. \endif
\if KO 마지막 성공 실행 시각을 가져옵니다. \endif \if EN Gets the most recent successful execution time. \endif
\if KO 정규화된 작업 이름을 가져옵니다. \endif \if EN Gets the normalized job name. \endif
\if KO 정규화된 작업 옵션을 가져옵니다. \endif \if EN Gets the normalized job options. \endif
\if KO action 값을 보관합니다. \endif \if EN Stores the action value. \endif
\if KO execute Count 값을 보관합니다. \endif \if EN Stores the execute count value. \endif
\if KO last Executed At 값을 보관합니다. \endif \if EN Stores the last executed at value. \endif
DreamineThreadJobOptions
\if KO 잘못된 이름과 음수 간격을 기본값으로 보정한 복사본을 생성합니다. \endif \if EN Creates a copy with invalid names and negative intervals normalized to defaults. \endif
반환: \if KO 정규화된 새 작업 옵션입니다. \endif \if EN A new normalized job-options instance. \endif
\if KO 밀리초 단위 작업 실행 간격을 가져오거나 설정합니다. \endif \if EN Gets or sets the job execution interval in milliseconds. \endif
\if KO 작업 활성화 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether the job is enabled. \endif
\if KO 작업이 오버플로 폴링 작업인지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether the job is an overflow polling job. \endif
\if KO 작업 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the job name. \endif
DreamineThreadManager
\if KO 코어 할당, 주기 정책 및 스케줄링 서비스를 사용해 클래스의 새 인스턴스를 초기화합니다. \endif \if EN Initializes a new instance of using core-allocation, cycle-policy, and scheduling services. \endif
coreAllocator— \if KO 스레드의 CPU 코어를 할당하고 해제할 서비스입니다. \endif \if EN The service that allocates and releases CPU cores for threads. \endifcyclePolicy— \if KO 작업자 실행 주기 지연 정책입니다. \endif \if EN The worker execution-cycle delay policy. \endifscheduler— \if KO 오버플로 작업을 기존 작업자에 배치할 스케줄러입니다. \endif \if EN The scheduler that routes overflow jobs to existing workers. \endifaffinityService— \if KO 선택적 CPU 선호도 서비스입니다. \endif \if EN The optional CPU-affinity service. \endiftimerResolutionService— \if KO 선택적 타이머 해상도 서비스입니다. \endif \if EN The optional timer-resolution service. \endiflogger— \if KO 선택적 진단 로거입니다. \endif \if EN The optional diagnostic logger. \endif\if KO 모든 작업자를 동기 중지·정리하고 코어 할당을 반환합니다. \endif \if EN Synchronously stops and disposes all workers and returns their core assignments. \endif
\if KO 모든 등록된 작업자에서 상태 스냅샷을 생성합니다. \endif \if EN Creates state snapshots from all registered workers. \endif
반환: \if KO 작업자 상태 정보 배열입니다. \endif \if EN An array of worker-state information. \endif
\if KO 등록된 작업자 스레드의 스레드 안전한 배열 스냅샷을 가져옵니다. \endif \if EN Gets a thread-safe array snapshot of registered worker threads. \endif
반환: \if KO 등록된 작업자 스레드의 스냅샷입니다. \endif \if EN A snapshot of registered worker threads. \endif
\if KO 이름이 일치하는 작업자 스레드를 일시 정지합니다. \endif \if EN Pauses the worker thread whose name matches. \endif
threadName— \if KO 일시 정지할 작업자 이름입니다. \endif \if EN The worker name to pause. \endif반환: \if KO 작업자를 찾아 일시 정지했으면 입니다. \endif \if EN when the worker was found and paused. \endif
\if KO 등록된 모든 작업자 스레드를 일시 정지합니다. \endif \if EN Pauses all registered worker threads. \endif
\if KO 옵션에 따라 전용 작업자 또는 기존 작업자의 오버플로 작업을 등록합니다. \endif \if EN Registers either a dedicated worker or an overflow job on an existing worker according to the options. \endif
options— \if KO 정규화할 스레드·코어·주기 옵션입니다. \endif \if EN The thread, core, and cycle options to normalize. \endifaction— \if KO 등록할 비동기 작업 대리자입니다. \endif \if EN The asynchronous job delegate to register. \endif반환: \if KO 생성되어 작업자에 할당된 스레드 작업입니다. \endif \if EN The created thread job assigned to a worker. \endif
\if KO 오버플로 폴링 작업을 기존 작업자에 배치하거나 작업자가 없으면 대체 작업자를 생성합니다. \endif \if EN Routes an overflow polling job to an existing worker, or creates a fallback worker when none exists. \endif
job— \if KO 배치할 오버플로 폴링 작업입니다. \endif \if EN The overflow polling job to route. \endif반환: \if KO 새 대체 작업자가 생성되면 잠금 밖에서 시작할 작업자이며 기존 작업자가 작업을 받으면 입니다. \endif \if EN The worker to start outside the lock when a fallback worker is created; when an existing worker absorbs the job. \endif
\if KO 이름이 일치하는 작업자 스레드를 재개합니다. \endif \if EN Resumes the worker thread whose name matches. \endif
threadName— \if KO 재개할 작업자 이름입니다. \endif \if EN The worker name to resume. \endif반환: \if KO 작업자를 찾아 재개했으면 입니다. \endif \if EN when the worker was found and resumed. \endif
\if KO 등록된 모든 작업자 스레드를 재개합니다. \endif \if EN Resumes all registered worker threads. \endif
\if KO 이름이 일치하는 작업자 스레드를 시작합니다. \endif \if EN Starts the worker thread whose name matches. \endif
threadName— \if KO 시작할 작업자 이름입니다. \endif \if EN The worker name to start. \endif반환: \if KO 작업자를 찾아 시작했으면 입니다. \endif \if EN when the worker was found and started. \endif
\if KO 등록된 모든 작업자 스레드의 스냅샷을 순회해 시작합니다. \endif \if EN Starts every registered worker thread from a snapshot of the collection. \endif
\if KO 이름이 일치하는 작업자 스레드를 동기 중지합니다. \endif \if EN Synchronously stops the worker thread whose name matches. \endif
threadName— \if KO 중지할 작업자 이름입니다. \endif \if EN The worker name to stop. \endif반환: \if KO 작업자를 찾아 중지했으면 입니다. \endif \if EN when the worker was found and stopped. \endif
\if KO 등록된 모든 작업자 스레드를 순서대로 동기 중지합니다. \endif \if EN Synchronously stops every registered worker thread in order. \endif
\if KO 등록된 모든 작업자 스레드를 순서대로 비동기 중지합니다. \endif \if EN Asynchronously stops every registered worker thread in order. \endif
반환: \if KO 모든 작업자의 순차 중지 작업입니다. \endif \if EN The sequential stop operation for all workers. \endif
\if KO 이름이 일치하는 작업자 스레드를 비동기 중지합니다. \endif \if EN Asynchronously stops the worker thread whose name matches. \endif
threadName— \if KO 중지할 작업자 이름입니다. \endif \if EN The worker name to stop. \endif반환: \if KO 작업자를 찾아 중지했는지를 나타내는 비동기 결과입니다. \endif \if EN An asynchronous result indicating whether the worker was found and stopped. \endif
\if KO 스레드 관리자가 아직 정리되지 않았는지 확인합니다. \endif \if EN Verifies that the thread manager has not been disposed. \endif
\if KO 대소문자를 구분하는 이름으로 등록된 작업자 스레드를 찾습니다. \endif \if EN Finds a registered worker thread by its case-sensitive name. \endif
threadName— \if KO 찾을 작업자 이름입니다. \endif \if EN The worker name to find. \endifthread— \if KO 성공 시 찾은 작업자를 받습니다. \endif \if EN Receives the found worker on success. \endif반환: \if KO 유효한 이름의 작업자를 찾았으면 입니다. \endif \if EN when a worker with a valid matching name is found. \endif
\if KO affinity Service 값을 보관합니다. \endif \if EN Stores the affinity service value. \endif
\if KO core Allocator 값을 보관합니다. \endif \if EN Stores the core allocator value. \endif
\if KO cycle Policy 값을 보관합니다. \endif \if EN Stores the cycle policy value. \endif
\if KO disposed 값을 보관합니다. \endif \if EN Stores the disposed value. \endif
\if KO logger 값을 보관합니다. \endif \if EN Stores the logger value. \endif
\if KO scheduler 값을 보관합니다. \endif \if EN Stores the scheduler value. \endif
\if KO sync Root 값을 보관합니다. \endif \if EN Stores the sync root value. \endif
\if KO threads 값을 보관합니다. \endif \if EN Stores the threads value. \endif
\if KO timer Resolution Service 값을 보관합니다. \endif \if EN Stores the timer resolution service value. \endif
DreamineThreadOptions
\if KO 잘못된 이름·간격·코어당 스레드 수·중지 제한 시간을 기본값으로 보정한 복사본을 생성합니다. \endif \if EN Creates a copy with invalid names, intervals, threads-per-core, and stop timeouts normalized to defaults. \endif
반환: \if KO 정규화된 새 스레드 옵션입니다. \endif \if EN A new normalized thread-options instance. \endif
\if KO 생성 직후 작업자를 시작할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether the worker starts immediately after creation. \endif
\if KO 자동 모드에서 CPU 코어당 최대 전용 작업자 스레드 수를 가져오거나 설정합니다. \endif \if EN Gets or sets the maximum number of dedicated worker threads per CPU core in automatic mode. \endif
\if KO 수동으로 할당할 CPU 코어 인덱스를 가져오거나 설정합니다. \endif \if EN Gets or sets the manually assigned CPU core index. \endif
\if KO CPU 코어 할당 모드를 가져오거나 설정합니다. \endif \if EN Gets or sets the CPU core-assignment mode. \endif
\if KO 밀리초 단위 기본 실행 주기 간격을 가져오거나 설정합니다. \endif \if EN Gets or sets the base cycle interval in milliseconds. \endif
\if KO 작업자 스레드 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the worker-thread name. \endif
\if KO 작업이 오버플로 폴링으로 할당될 때 사용할 폴링 간격을 가져오거나 설정합니다. \endif \if EN Gets or sets the polling interval used when a job is assigned to overflow polling. \endif
\if KO 작업자 스레드 우선순위를 가져오거나 설정합니다. \endif \if EN Gets or sets the worker-thread priority. \endif
\if KO 중지 작업이 작업자 스레드 종료를 기다릴 제한 시간을 가져오거나 설정합니다. \endif \if EN Gets or sets how long stop operations wait for the worker thread to exit. \endif
\if KO 간격이 0일 때 적응형 CPU 지연을 사용할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether adaptive CPU delay is enabled when the interval is zero. \endif
\if KO 고정밀 타이머 해상도를 요청할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether high-precision timer resolution is requested. \endif
\if KO 간격이 0일 때 작업자 스레드가 실행권을 양보할지 여부를 가져오거나 설정합니다. \endif \if EN Gets or sets whether the worker yields when the interval is zero. \endif
DreamineThreadPriority
\if KO 시간에 민감한 작업을 위한 높은 우선순위입니다. \endif \if EN High priority for timing-sensitive work. \endif
\if KO 백그라운드 또는 모니터링 작업을 위한 낮은 우선순위입니다. \endif \if EN Low priority for background or monitoring work. \endif
\if KO 일반 작업을 위한 보통 우선순위입니다. \endif \if EN Normal priority for standard work. \endif
DreamineThreadScheduler
\if KO 작업 수가 가장 적고 이름 순서가 빠른 작업자 스레드를 선택합니다. \endif \if EN Selects the worker thread with the fewest jobs, breaking ties by name. \endif
threads— \if KO 선택 가능한 작업자 스레드 목록입니다. \endif \if EN The available worker threads from which to select. \endif반환: \if KO 선택된 작업자이며 목록이 비어 있으면 입니다. \endif \if EN The selected worker, or when the list is empty. \endif
DreamineThreadStatus
\if KO 스레드가 생성되었지만 시작되지 않았습니다. \endif \if EN The thread has been created but not started. \endif
\if KO 스레드가 정리되었습니다. \endif \if EN The thread has been disposed. \endif
\if KO 예외로 인해 스레드가 실패했습니다. \endif \if EN The thread has failed because of an exception. \endif
\if KO 스레드가 일시 정지되었습니다. \endif \if EN The thread is paused. \endif
\if KO 스레드가 실행 중입니다. \endif \if EN The thread is running. \endif
\if KO 스레드가 중지되었습니다. \endif \if EN The thread has stopped. \endif
\if KO 스레드가 중지되는 중입니다. \endif \if EN The thread is stopping. \endif
FixedIntervalCyclePolicy
\if KO 일반 작업은 기본 간격, 오버플로 작업은 오버플로 간격을 사용해 지연을 계산합니다. \endif \if EN Calculates delay using the base interval for normal work and the overflow interval for overflow work. \endif
options— \if KO 기본 및 오버플로 간격 설정입니다. \endif \if EN The base and overflow interval settings. \endifassignment— \if KO 현재 오버플로 여부를 포함하는 코어 할당입니다. \endif \if EN The core assignment containing current overflow status. \endifcontext— \if KO 현재 주기 컨텍스트이며 계약 검증을 위해 필요합니다. \endif \if EN The current cycle context, required for contract validation. \endif반환: \if KO 정규화된 밀리초 단위 지연입니다. \endif \if EN The normalized delay in milliseconds. \endif
ICpuInfoProvider
\if KO 사용 가능한 논리 프로세서 수를 가져옵니다. \endif \if EN Gets the available logical processor count. \endif
반환: \if KO 논리 프로세서 수입니다. \endif \if EN The logical processor count. \endif
\if KO 지정한 CPU 코어 인덱스가 유효한지 확인합니다. \endif \if EN Determines whether the specified CPU core index is valid. \endif
coreIndex— \if KO 검사할 0부터 시작하는 CPU 코어 인덱스입니다. \endif \if EN The zero-based CPU core index to validate. \endif반환: \if KO 유효하면 , 아니면 입니다. \endif \if EN when valid; otherwise, . \endif
ICpuUsageProvider
\if KO 전체 CPU 사용률을 백분율로 가져옵니다. \endif \if EN Gets total CPU usage as a percentage. \endif
반환: \if KO 전체 CPU 사용률 백분율입니다. \endif \if EN The total CPU usage percentage. \endif
IDreamineThread
\if KO 이 작업자 스레드에 실행할 작업을 추가합니다. \endif \if EN Adds an executable job to this worker thread. \endif
job— \if KO 추가할 작업입니다. \endif \if EN The job to add. \endif\if KO 작업자 스레드 상태의 스냅샷을 가져옵니다. \endif \if EN Gets a snapshot of the worker-thread state. \endif
반환: \if KO 현재 스레드 상태 스냅샷입니다. \endif \if EN The current thread-state snapshot. \endif
\if KO 작업자 스레드 실행을 일시 정지합니다. \endif \if EN Pauses worker-thread execution. \endif
\if KO 일시 정지된 작업자 스레드를 재개합니다. \endif \if EN Resumes a paused worker thread. \endif
\if KO 작업자 스레드를 시작합니다. \endif \if EN Starts the worker thread. \endif
\if KO 작업자 스레드를 중지하고 종료 대기 시간 동안 호출자를 차단합니다. \endif \if EN Stops the worker thread and blocks the caller during the join wait. \endif
\if KO 종료 대기 시간 동안 호출 스레드를 차단하지 않고 작업자 스레드를 중지합니다. \endif \if EN Stops the worker thread without blocking the caller thread during the join wait. \endif
반환: \if KO 비동기 중지 작업입니다. \endif \if EN The asynchronous stop operation. \endif
\if KO CPU 코어 할당을 가져옵니다. \endif \if EN Gets the CPU core assignment. \endif
\if KO 이 작업자 스레드에 할당된 작업 수를 가져옵니다. \endif \if EN Gets the number of jobs assigned to this worker thread. \endif
\if KO 작업자 스레드 이름을 가져옵니다. \endif \if EN Gets the worker-thread name. \endif
\if KO 정규화된 작업자 스레드 옵션을 가져옵니다. \endif \if EN Gets the normalized worker-thread options. \endif
\if KO 현재 작업자 스레드 상태를 가져옵니다. \endif \if EN Gets the current worker-thread status. \endif
IDreamineThreadJob
\if KO 작업 대리자를 비동기로 실행하고 실행 통계를 갱신합니다. \endif \if EN Executes the job delegate asynchronously and updates execution statistics. \endif
cancellationToken— \if KO 작업 실행을 취소하는 토큰입니다. \endif \if EN A token that cancels job execution. \endif반환: \if KO 비동기 작업 실행을 나타내는 값 작업입니다. \endif \if EN A value task representing asynchronous job execution. \endif
\if KO 지정한 시각에 이 작업을 실행해야 하는지 확인합니다. \endif \if EN Determines whether this job should run at the specified time. \endif
now— \if KO 실행 여부를 평가할 현재 시각입니다. \endif \if EN The current time at which execution is evaluated. \endif반환: \if KO 실행해야 하면 , 아니면 입니다. \endif \if EN when the job should run; otherwise, . \endif
\if KO 완료된 실행 횟수를 가져옵니다. \endif \if EN Gets the number of completed executions. \endif
\if KO 마지막 실행에서 발생한 예외를 가져옵니다. \endif \if EN Gets the exception from the most recent execution. \endif
\if KO 마지막 실행 시각을 가져옵니다. \endif \if EN Gets the most recent execution time. \endif
\if KO 작업 이름을 가져옵니다. \endif \if EN Gets the job name. \endif
\if KO 정규화된 작업 옵션을 가져옵니다. \endif \if EN Gets the normalized job options. \endif
IDreamineThreadManager
\if KO 모든 등록된 작업자 스레드의 상태 스냅샷을 가져옵니다. \endif \if EN Gets state snapshots for all registered worker threads. \endif
반환: \if KO 스레드 상태 스냅샷 목록입니다. \endif \if EN The thread-state snapshot list. \endif
\if KO 등록된 작업자 스레드의 스냅샷 목록을 가져옵니다. \endif \if EN Gets a snapshot list of registered worker threads. \endif
반환: \if KO 등록된 작업자 스레드 목록입니다. \endif \if EN The registered worker-thread list. \endif
\if KO 지정한 작업자 스레드를 일시 정지합니다. \endif \if EN Pauses the specified worker thread. \endif
threadName— \if KO 일시 정지할 스레드 이름입니다. \endif \if EN The name of the worker thread to pause. \endif반환: \if KO 찾아서 일시 정지했으면 입니다. \endif \if EN when the worker was found and paused. \endif
\if KO 등록된 모든 작업자 스레드를 일시 정지합니다. \endif \if EN Pauses all registered worker threads. \endif
\if KO 지정한 옵션에 따라 작업자 스레드 또는 오버플로 폴링 작업을 등록합니다. \endif \if EN Registers a worker thread or overflow polling job according to the specified options. \endif
options— \if KO 스레드, 코어 및 주기 설정입니다. \endif \if EN The thread, core, and cycle settings. \endifaction— \if KO 각 실행 시 호출할 비동기 작업 대리자입니다. \endif \if EN The asynchronous job delegate invoked on each execution. \endif반환: \if KO 등록된 스레드 작업입니다. \endif \if EN The registered thread job. \endif
\if KO 지정한 작업자 스레드를 재개합니다. \endif \if EN Resumes the specified worker thread. \endif
threadName— \if KO 재개할 스레드 이름입니다. \endif \if EN The name of the worker thread to resume. \endif반환: \if KO 찾아서 재개했으면 입니다. \endif \if EN when the worker was found and resumed. \endif
\if KO 등록된 모든 작업자 스레드를 재개합니다. \endif \if EN Resumes all registered worker threads. \endif
\if KO 지정한 작업자 스레드를 시작합니다. \endif \if EN Starts the specified worker thread. \endif
threadName— \if KO 시작할 작업자 스레드 이름입니다. \endif \if EN The name of the worker thread to start. \endif반환: \if KO 찾아서 시작했으면 입니다. \endif \if EN when the worker was found and started. \endif
\if KO 등록된 모든 작업자 스레드를 시작합니다. \endif \if EN Starts all registered worker threads. \endif
\if KO 지정한 작업자 스레드를 동기적으로 중지합니다. \endif \if EN Stops the specified worker thread synchronously. \endif
threadName— \if KO 중지할 작업자 스레드 이름입니다. \endif \if EN The name of the worker thread to stop. \endif반환: \if KO 찾아서 중지했으면 입니다. \endif \if EN when the worker was found and stopped. \endif
\if KO 등록된 모든 작업자 스레드를 동기적으로 중지합니다. \endif \if EN Stops all registered worker threads synchronously. \endif
\if KO 종료 대기 동안 호출 스레드를 차단하지 않고 모든 작업자 스레드를 중지합니다. \endif \if EN Stops all worker threads without blocking the caller during join waits. \endif
반환: \if KO 모든 스레드의 비동기 중지 작업입니다. \endif \if EN The asynchronous stop operation for all threads. \endif
\if KO 종료 대기 동안 호출 스레드를 차단하지 않고 지정한 작업자 스레드를 중지합니다. \endif \if EN Stops the specified worker thread without blocking the caller during the join wait. \endif
threadName— \if KO 중지할 작업자 스레드 이름입니다. \endif \if EN The name of the worker thread to stop. \endif반환: \if KO 찾아서 중지했는지를 나타내는 비동기 결과입니다. \endif \if EN An asynchronous result indicating whether the worker was found and stopped. \endif
\if KO 이름으로 등록된 작업자 스레드를 가져오려고 시도합니다. \endif \if EN Attempts to get a registered worker thread by name. \endif
threadName— \if KO 찾을 작업자 스레드 이름입니다. \endif \if EN The worker-thread name to find. \endifthread— \if KO 성공 시 찾은 작업자 스레드를 받습니다. \endif \if EN Receives the found worker thread on success. \endif반환: \if KO 스레드를 찾았으면 입니다. \endif \if EN when the worker was found. \endif
IDreamineThreadScheduler
\if KO 오버플로 폴링 작업을 실행할 작업자 스레드를 선택합니다. \endif \if EN Selects a worker thread for an overflow polling job. \endif
threads— \if KO 선택 가능한 작업자 스레드 목록입니다. \endif \if EN The available worker threads from which to select. \endif반환: \if KO 선택된 작업자 스레드이며 적합한 스레드가 없으면 입니다. \endif \if EN The selected worker thread, or when none is suitable. \endif
IThreadAffinityService
\if KO 현재 스레드를 지정한 CPU 코어에 고정합니다. \endif \if EN Applies affinity for the specified CPU core to the current thread. \endif
coreIndex— \if KO 적용할 0부터 시작하는 CPU 코어 인덱스입니다. \endif \if EN The zero-based CPU core index to apply. \endif\if KO 플랫폼이 지원하는 경우 현재 스레드의 CPU 선호도를 해제합니다. \endif \if EN Clears CPU affinity from the current thread when supported. \endif
IThreadCoreAllocator
\if KO 지정한 스레드 옵션에 맞는 CPU 코어 할당을 만듭니다. \endif \if EN Allocates a CPU core assignment for the specified thread options. \endif
options— \if KO 코어 모드와 수동 코어를 포함하는 스레드 옵션입니다. \endif \if EN The thread options containing core mode and manual-core selection. \endif반환: \if KO 선택된 CPU 코어 할당입니다. \endif \if EN The selected CPU core assignment. \endif
\if KO 이전에 할당한 CPU 코어 할당을 해제합니다. \endif \if EN Releases a previously allocated CPU core assignment. \endif
assignment— \if KO 해제할 CPU 코어 할당입니다. \endif \if EN The CPU core assignment to release. \endifIThreadCyclePolicy
\if KO 다음 작업자 주기까지 기다릴 밀리초 지연을 계산합니다. \endif \if EN Calculates the delay in milliseconds before the next worker cycle. \endif
options— \if KO 주기 설정을 포함하는 스레드 옵션입니다. \endif \if EN The thread options containing cycle settings. \endifassignment— \if KO 현재 CPU 코어 할당입니다. \endif \if EN The current CPU core assignment. \endifcontext— \if KO 현재 실행 시간과 CPU 사용률을 포함하는 주기 컨텍스트입니다. \endif \if EN The current cycle context containing execution time and CPU usage. \endif반환: \if KO 다음 주기 전 대기할 밀리초입니다. \endif \if EN The number of milliseconds to wait before the next cycle. \endif
ITimerResolutionService
\if KO 고정밀 타이머 해상도 사용을 시작합니다. \endif \if EN Begins using high-precision timer resolution. \endif
\if KO 고정밀 타이머 해상도 사용을 종료합니다. \endif \if EN Ends use of high-precision timer resolution. \endif
OverflowPollingPolicy
\if KO 구성된 오버플로 폴링 간격을 반환하며 음수는 100밀리초로 보정합니다. \endif \if EN Returns the configured overflow polling interval, normalizing negative values to 100 milliseconds. \endif
options— \if KO 오버플로 폴링 간격 설정입니다. \endif \if EN The overflow polling interval settings. \endifassignment— \if KO 현재 코어 할당이며 계약 검증을 위해 필요합니다. \endif \if EN The current core assignment, required for contract validation. \endifcontext— \if KO 현재 주기 컨텍스트이며 계약 검증을 위해 필요합니다. \endif \if EN The current cycle context, required for contract validation. \endif반환: \if KO 정규화된 오버플로 폴링 지연입니다. \endif \if EN The normalized overflow polling delay. \endif