1. boost::mutex
lock() 会一直等待,直到获得一个互斥体
unlock() 释放互斥体
try_lock() 不会等待,它只会在互斥体可用时才获得,否则返回false
2. boost::timed_mutex
timed_lock(time), 试图在一定时间内获得互斥体
3. boost::lock_guard
会在构造函数调用lock(), 析构函数调用unlock()。是一个RAII用语
提供了一个模板类
使用:boost:mutex mutex;
boost::lock_guard<boost:mutex> lock(mutex);
4. boost::uniqu_lock
跟lock_guard的行为是一样的,是RAII用语。
这个所谓的独占锁意味着一个互斥量同时只能被一个线程获取。 其他线程必须等待,直到互斥体再次被释放。
5. boost::shared_lock
提供了非独占锁, 只需要读访问的线程不需要知道同一时间其他线程是否访问。 因此非独占锁可以共享一个互斥体。