• D
    Fix a race condition in WindowsThread (port::Thread) · fe608e32
    Dmitri Smirnov 提交于
    Summary:
    Fix a race condition when we create a thread and immediately destroy
     This case should be supported.
      What happens is that the thread function needs the Data instance
      to actually run but has no shared ownership and must rely on the
      WindowsThread instance to continue existing.
      To address this we change unique_ptr to shared_ptr and then
      acquire an additional refcount for the threadproc which destroys it
      just before the thread exit.
      We choose to allocate shared_ptr instance on the heap as this allows
      the original thread to continue w/o waiting for the new thread to start
      running.
    Closes https://github.com/facebook/rocksdb/pull/3240
    
    Differential Revision: D6511324
    
    Pulled By: yiwu-arbug
    
    fbshipit-source-id: 4633ff7996daf4d287a9fe34f60c1dd28cf4ff36
    fe608e32
win_thread.cc 4.2 KB