현재 내 코드에서 나는 중요한 부분이 뮤텍스보다 빠른 것을 읽을이 코드의 부스트 뮤텍스보다 빠릅니다.
boost::mutex Mymutex
void methodA()
{
boost::mutex::scoped_lock lock(Mymutex);
......
......
......
}
이와 같은 섹션이? 그래서 나는 이것이 더 빠르다는 것을 알고 싶었습니다.
boost::recursive_mutex m_guard;
void methodA()
{
// this section is not locked
{
boost::lock_guard<boost::recursive_mutex> lock(m_guard);
// this section is locked
}
//This section not locked
}
두 번째 방법이 더 빠릅니까? 내가 주로 뮤텍스를 사용하는 이유는 경쟁 조건을 방지하고 메서드에 대한 액세스를 잠그는 것입니다. 그래서 한 번에 한 스레드가 액세스합니다. 그보다 더 빠른 것이 있습니까? 내 다른 관심사는 성명서에 있었다
boost::lock_guard<boost::recursive_mutex> lock(m_guard);
언제나 methodA()가 스택에 lock이 만들어 질 것이라고 생각되는 것 같습니다. 나는이 변수가 호출 될 때마다 스택에 생성되지 않도록 정적 변수로 lock을 선언하려고 생각했다.이 경우 어떻게 m_guard를 추가 할 수 있는가? 예를 들어
boost::recursive_mutex SomeClass::m_guard; //This is static
boost::lock_guard<boost::recursive_mutex> SomeClass::lock //Suppose this is static
void SomeClass::methodA()
{
{
//How do i make lock "lock" mguard
}
}
나는 atomic_flag를 사용할 수있는 기회가 결코 'atomic.hpp'에 없다? – Rajeshwar
예 - http://www.boost.org/doc/libs/1_53_0/boost/atomic/atomic.hpp –
답변 해 주셔서 감사합니다. – Rajeshwar