Skip to content

Add parallel pipeline with Channel-based scheduling and cancellation support #260

@JusterZhu

Description

@JusterZhu

Summary

Replace the sequential file processing with a TPL Dataflow / Channel-based parallel pipeline. Add CancellationToken support throughout.

Scope

  • \DiffPipeline\ class orchestrating diff tasks via \Channel\
  • \IPipelineScheduler\ for pluggable scheduling strategies
  • Configurable parallelism degree (default: Environment.ProcessorCount)
  • CancellationToken propagation through all layers
  • Progress reporting: \IAsyncEnumerable\ per-file status
  • Thread-safe incremental output

Expected Improvements

  • Directory diff: near-linear speedup with CPU core count (~4-8x on typical hardware)
  • Cancellable long-running operations (no more stuck processes)
  • Real-time progress feedback for UI integration

Dependencies

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions