gpt4 book ai didi

c++ - 将 Boost 智能指针传递给线程函数

转载 作者:行者123 更新时间:2023-11-30 04:27:44 25 4
gpt4 key购买 nike

我有这样一种情况,某些对象必须作为线程回调函数的参数传递。对象是动态创建的,在将其传递给线程后,在该上下文中(在启动线程的方法中)不再需要/使用对象。线程函数现在是唯一应该拥有该对象的上下文。

假设我想使用一些 Boost 智能指针(而不是将原始指针传递给线程),哪一个最合适?在这种情况下,最佳做法是什么?

我真正需要的是 std::auto_ptr 及其通过复制构造函数的移动语义。我相信这个智能指针非常适合这里,但由于众所周知的原因它已被弃用(而且我不能依赖 tr1C++11 指针;必须(和想)仅使用 Boost,因为此代码在必须同时在 Visual Studio 20082010 中编译的项目之间共享。

boost::shared_ptr 是一个选项 - 我可以按值传递它,但认为它会过大。 是否有机会使用 boost::scoped_ptr 模拟移动语义(以安全的方式)?我不需要引用计数,因为我不在两个上下文之间共享对象,我只想将对象的所有权从一个上下文转移到另一个上下文。

最佳答案

你可以使用 boost::interprocess::unique_ptr , 或者使用 Boost.Move 编写您自己的 unique_ptr .

boost::interprocess::unique_ptr 在其实现中使用了 Boost.Move,而 Boost.Move 模拟了 C++11 移动语义 C++03。

关于c++ - 将 Boost 智能指针传递给线程函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com