对于我的跨平台应用程序,我已经开始使用Boost,但是我无法理解如何实现代码来重现Win32的关键部分或.Net的锁的行为.
我想写一个方法Foo,可以从不同的线程调用来控制对共享字段的写操作.应该允许同一个线程中的递归调用(Foo() – > Foo()).
在C#中,这个实现非常简单:
object _synch = new object(); void Foo() { lock (_synch) // one thread can't be lock by him self,but another threads must wait untill { // do some works if (...) { Foo(); } } }
解决方法
使用boost可以使用boost :: lock_guard<>类:
class test { public: void testMethod() { // this section is not locked { boost::lock_guard<boost::recursive_mutex> lock(m_guard); // this section is locked } // this section is not locked } private: boost::recursive_mutex m_guard; };
PS这些课程位于Boost.Thread图书馆.