Poco::Mutex

Mutex是互斥锁,可以锁住一段代码,用于多线程,保护共有的变量。对Mutex的使用,推荐使用ScopedLock,因为它可以自动解锁,这就是C++析构函数的作用。

void t_scope_mutex(Mutex& m)
{
    Mutex::ScopedLock lock(m);
    // do something without unlock m,
    // because it is unlocked auto.
}

int main()
{
    Mutex m;
    t_scope_mutex(m);

    return 0;
}

Mutex可以嵌套,即同一个线程可以多次锁定一个锁子,但要多次解锁才能释放锁子。

class MutexRunable:public Runnable
{
public:
    MutexRunable(Mutex& m):m_m(m) {  }
    void run()
    {
        m_m.lock();
        std::cout << "Get lock." << std::endl;
    }
private:
    Mutex& m_m;
};

int main()
{
    Mutex m;
    MutexRunable r(m);
    Thread t;
    m.lock();
    m.lock();    // 多次锁定
    m.unlock();
    m.unlock();   // It is OK.
    t.start(r);
    t.join();

    return 0;
}

与Poco::Mutex相像的Poco::FastMutex提供和Mutex相同的功能,但不可以嵌套锁。


你可能感兴趣的:(Poco::Mutex)