草庐IT

shared_timed_mutex

全部标签

c++ - 添加 #include <boost/thread/mutex.hpp> 会破坏我的 ActiveX 控件吗?

在ActiveX控件中使用boost::mutexheader是否存在已知问题?(boost版v1.39)如果我在VisualStudio2008中创建一个名为“DefaultOCXControl”的MFCActiveX控件项目,那么我可以构建它,该控件将自身注册为构建的一部分,并且可以像您期望的那样插入到ActiveX测试容器中。一切顺利。如果我再添加这一行:#include在我的DefaultOCXControlCtrl.h文件顶部并重建:构建结束时的注册步骤失败并显示:DebugAssertionFailed!Program:C:\Windows\system32\regsvr3

c++ - 有没有在boost 1.48.0下使用mutex的最新例子?

我在网上找到的大多数示例都已过时,使用的是boost::mutex,我没有声明包括或.在1.48.0版中是否有任何明确的示例说明如何使用boost::mutex?ThetutorialsinChapter27(Threads)非常不清楚,不提供任何代码示例。 最佳答案 查看此示例(boost::mutex用法在Resource::use()中提供):#include#includeclassResource{public:Resource():i(0){}voiduse(){boost::mutex::scoped_locklock

c++ - "Connecting"SDL_Surface 到 shared_ptr

我想知道如何将SDL_Surface*与shared_ptr连接起来?在删除SDL_Surface之前,我需要调用SDL_FreeSurface(SDL_Surface*)。如何在shared_ptr中“修改删除过程”? 最佳答案 只需将SDL_FreeSurface传递给构造函数:std::shared_ptrshared_surf(SDL_LoadBMP("foo.bmp"),SDL_FreeSurface);请确保您不使用SDL_SetVideoMode或SDL_GetVideoSurface返回的指针执行此操作。

c++ - 与 std::mutex 相比,其他互斥包装器库有哪些优势?

C++标准库提供了std::mutex(lock,unlock,try_lock)功能,可以在多线程环境中工作。我还听说过包装库(例如Boost::mutex),据我所知,它们提供相同的功能(lock、unlock、try_lock).我的问题是,与标准包装库相比,使用此类包装库有什么优势? 最佳答案 std::mutex、std::thread和线程库的其他元素仅适用于C++11。boost::mutex等早于C++11。所以优点是如果您没有C++11支持,您可以使用它们。 关于c++

c++ - shared_ptr 的循环依赖问题是什么?

我阅读了共享指针并了解如何使用。但我一直不明白共享指针的循环依赖问题以及弱指针将如何解决这些问题。谁能解释清楚这个问题? 最佳答案 问题没那么复杂。让-->代表一个共享指针:Therestoftheprogram-->objectA-->objectB^|\|\vobjectC所以我们得到了一个共享指针的循环依赖。每个对象的引用计数是多少?A:2B:1C:1现在假设程序的其余部分(或者至少是其中包含指向A的共享指针的部分)被销毁了。那么A的引用计数减1,所以循环中每个对象的引用计数都为1。那么删除了什么?没有什么。但是我们要删除什么

c++ - new 和 make_shared 用于共享指针

我遇到了this@kerekSB状态的帖子和答案之一std::shared_ptrp1=std::make_shared("foo");std::shared_ptrp2(newObject("foo"));Inyourcode,thesecondvariableisjustanakedpointer,notasharedpointeratall.Nowonthemeat.make_sharedis(inpractice)moreefficient,becauseitallocatesthereferencecontrolblocktogetherwiththeactualobject

c++ - 在编译时验证对象是否创建为 shared_ptr

我写的一些类(通常作为boost::asio的一部分)的对象依赖于包装在shared_ptr中,因为它们使用shared_from_this()。如果一个对象没有在shared_ptr中实例化,有没有办法阻止它被编译?所以,我要找的是:std::shared_ptra=std::make_shared();//shouldcompilefinestd::unique_ptra=std::make_unique();//compileerrorMyClassa;//compileerror 最佳答案 将其构造函数设为私有(privat

c++ - 转换 shared_ptr 类型 vector 的迭代器

如何转换shared_ptr类型vector的迭代器?考虑以下示例:typedefboost::shared_ptrtype_myClass;vectorvect;vector::iteratoritr=vect.begin();while(itr!=vect.end()){//Followingstatementworks,butIwishtorathercastthis//toMyClassandthencallafunction?(*itr)->doSomething();} 最佳答案 您不想转换,而是提取对该对象的引用:My

c++ - std::atomic 加载方法在与 std::shared_ptr 一起使用时减少引用计数

我想使用std::atomic在我的代码中,以便可以自动更新shared_ptr,但是在访问shared_ptr时我遇到了问题。atomic上的load()方法似乎减少了shared_ptr上的引用计数,因此我无法在不释放对象的情况下实际使用该对象。这是显示问题的一段简化代码...typedefshared_ptrMyClassPtr;typedefatomicMyClassAtomicPtr;//1.MyClassPtrptr(newMyClass());printf("1.use_count=%d\n",ptr.use_count());//2.MyClassAtomicPtrat

c++ - 了解 C++ std::shared_ptr

我有一个问题,请看下面这个简单的C++程序,intmain(){shared_ptrsptr1(newint);shared_ptrsptr2=sptr1;shared_ptrsptr3;shared_ptrsptr4;sptr3=sptr2;cout输出:333444sptr1和sptr3对象如何知道引用计数在打印4时递增。据我所知,引用计数是每个shared_ptr对象中的一个变量。 最佳答案 Asfarasiknowreferencecountisavariableineachshared_ptrobject.不,引用计数存储