我在没有 C++11 的多个平台和编译器上使用 boost 1.51。
在我的主线程中,我有一个非常长且昂贵的复制,std::string
veryLongString
我需要将其传递给一个新线程进行处理。
创建新线程后,我不再使用veryLongString
主线程,所以我想将它移到boost::thread
ctor中。
主线程或 的范围veryLongString
可能在新线程完成之前结束,因此通过引用传递(例如 with boost::ref
)不是一种选择。
显然,如果veryLongString
创建为 ashared_ptr<std::string>
那么我可以将其复制shared_ptr
到线程 ctor 中,但事实并非如此,所以无论如何我都需要复制它。
我怎样才能[boost::]move()
veryLongString
进入boost::thread
ctor (可能使用 via boost::bind
)?这可能吗?