• Lee Howes's avatar
    Add SemiFuture class. · a95a6976
    Lee Howes authored
    Summary:
    Offer a clean separation between future as a vocabulary type for crossing
    library interfaces, and future as a type to manage continuations.
    
    The principle is that if we want an API with clean separation of execution it
    should both return and receive SemiFutures. The returned SemiFuture would
    only be awaitable, but not continuable. If the caller wants to enqueue a
    continuation then it is efficiently convertable into a folly::Future by
    calling .via.
    
    This means that an API a) Does not have to take an executor to ensure it
    returns a valid future. That can be deferred to the caller or the caller's
    caller/target for true separation. b) The API can ensure that its own executor
    is not exposed to the caller, while still having a clean API.
    
    Obviously if some API wants to allow returning of a continuable future, then it
    can also provide an executor-taking API.
    
    Reviewed By: yfeldblum
    
    Differential Revision: D5769284
    
    fbshipit-source-id: 46241d1274bf7b1698a7d28a47cff2a65a983740
    a95a6976
Promise.h 3.72 KB