• Tom Jackson's avatar
    parallel(pipeline) · d3cc50e0
    Tom Jackson authored
    Summary:
    Adding `... | parallel(my | pipe | line) | ...` for parallelizing a portion of a generator pipeline.
    
    ```lang=cpp
    auto factored = from(values)
    | parallel(filter(isEven) | map(square) | sub(count))
    | sum;
    ```
    
    Work is divided evenly among a fixed number of threads using a `MPMCQueue`.
    
    Test Plan: Unit tests and benchmarks testing for a variety of workloads and performance characteristics, including sub-linear (blocking) workloads, linear (mostly math) workloads, and superlinear (sleeping) workloads to simulate real-world use.
    
    Reviewed By: lucian@fb.com
    
    FB internal diff: D638551
    d3cc50e0
Base.h 15.3 KB