2010-05-06 108 views
1

升壓/線程/並行線程/ shared_mutex.hpp包含此代碼:的boost :: this_thread :: disable_interruption對象使用混亂

... 
#include <boost/thread/detail/thread_interruption.hpp> 
... 

class shared_mutex 
{ 
    ... 
    void lock_shared() 
    { 
     boost::this_thread::disable_interruption do_not_disturb; 
     boost::mutex::scoped_lock lk(state_change); 

     while(state.exclusive || state.exclusive_waiting_blocked) 
     { 
      shared_cond.wait(lk); 
     } 
     ++state.shared_count; 
    } 
    ... 
}; 

但升壓/線程/細節/ thread_interruption.hpp不包含實現disable_interruption,只有原型。

在boost_1_42_0 /庫/線程/ src目錄/並行線程

我們沒有實施過

它是如何工作!???

回答

1

grep發現它在boost_1_42_0/libs/thread/src/pthread/thread.cpp

disable_interruption::disable_interruption(): 
     interruption_was_enabled(interruption_enabled()) 
    { 
     if(interruption_was_enabled) 
     { 
      detail::get_current_thread_data()->interrupt_enabled=false; 
     } 
    } 

析構函數和方法都在那裏了。

+0

非常感謝你的!我不知道我怎麼能錯過它... – Evgenii 2010-05-06 12:13:42

0

有2個實現disable_interruption

  1. boost_1_42_0/libs/thread/src/pthread/thread.cpp
  2. boost_1_42_0/libs/thread/src/win32/thread.cpp

你對一個合適的鏈接根據您的平臺