c – 如何使Boost成为关键部分?
发布时间:2020-12-16 05:38:08 所属栏目:百科 来源:网络整理
导读:对于我的跨平台应用程序,我已经开始使用Boost,但是我无法理解如何实现代码来重现Win32的关键部分或.Net的锁的行为. 我想写一个方法Foo,可以从不同的线程调用来控制对共享字段的写操作.应该允许同一个线程中的递归调用(Foo() – Foo()). 在C#中,这个实现非常
对于我的跨平台应用程序,我已经开始使用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图书馆. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |