Skip to content
  • Juergen Ributzka's avatar
    34390c70
    Add C API for thread yielding callback. · 34390c70
    Juergen Ributzka authored
    Sometimes a LLVM compilation may take more time then a client would like to
    wait for. The problem is that it is not possible to safely suspend the LLVM
    thread from the outside. When the timing is bad it might be possible that the
    LLVM thread holds a global mutex and this would block any progress in any other
    thread.
    
    This commit adds a new yield callback function that can be registered with a
    context. LLVM will try to yield by calling this callback function, but there is
    no guaranteed frequency. LLVM will only do so if it can guarantee that
    suspending the thread won't block any forward progress in other LLVM contexts
    in the same process.
    
    Once the client receives the call back it can suspend the thread safely and
    resume it at another time.
    
    Related to <rdar://problem/16728690>
    
    llvm-svn: 208945
    34390c70
    Add C API for thread yielding callback.
    Juergen Ributzka authored
    Sometimes a LLVM compilation may take more time then a client would like to
    wait for. The problem is that it is not possible to safely suspend the LLVM
    thread from the outside. When the timing is bad it might be possible that the
    LLVM thread holds a global mutex and this would block any progress in any other
    thread.
    
    This commit adds a new yield callback function that can be registered with a
    context. LLVM will try to yield by calling this callback function, but there is
    no guaranteed frequency. LLVM will only do so if it can guarantee that
    suspending the thread won't block any forward progress in other LLVM contexts
    in the same process.
    
    Once the client receives the call back it can suspend the thread safely and
    resume it at another time.
    
    Related to <rdar://problem/16728690>
    
    llvm-svn: 208945
Loading