boost :: this_thread :: disable_interruption использование путаницы - PullRequest
1 голос
/ 06 мая 2010

boost / thread / pthread / shared_mutex.hpp содержит этот код:

...
#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;
    }
    ...
};

но boost / thread / detail / thread_interruption.hpp не содержит реализацию disable_interruption, только прототип.

в boost_1_42_0 / libs / thread / src / pthread у нас тоже нет реализации

как это работает! ???

Ответы [ 2 ]

1 голос
/ 06 мая 2010

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 голосов
/ 06 мая 2010

Существует 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

Вы ссылаетесь на соответствующую в зависимости от вашей платформы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...