读书人

动态对象跟多线程

发布时间: 2012-07-28 12:25:13 作者: rapoo

动态对象和多线程
我最近在写一个多线程的程序。程序会一次性启动n个线程。但是每个线程传入的参数是一个动态分配的对象。程序能正确运行,前提是我在主程序中不去销毁这些对象,而在线程中做。但这样做我总觉得不是最好的。我是希望能找一个类似于boost::shared_ptr的方案。我试了shared_ptr,但是编译无法通过。求大牛帮忙看看。

能运行的程序(我在线程函数中获得p并在线程结束时销毁之,程序能运行):

C/C++ code
for(int i=0; i<100; i++){  CETF *p = new CETF();  boost::thread * thrdETFPricing = new boost::thread(boost::bind( &CETF::Pricing, p));}


我尝试用boost::shared_ptr如下(编译错误)
C/C++ code
for(int i=0; i<100; i++){  shared_ptr<CETF> p(new CETF());  boost::thread * thrdETFPricing = new boost::thread(boost::bind( &CETF::Pricing, p));}


我是希望能够不要在线程函数Pricing的最后去销毁对象(而且还销不干净,应该还会造成内存泄露),而在主函数中管理这些传进去的对象,或者最好是能用上shared_ptr(因为它能够自动销毁而不用关心在什么时候销毁它),请教一下大牛们我该怎么做?

[解决办法]
写错了
C/C++ code
std::vector<shared_ptr<CETF>> CETF_vec
[解决办法]
探讨
引用:

动态对象+多线程=不稳定
(^_^)


那如果不得不用,怎么办?

读书人网 >C++

热点推荐