0
我想启动执行一些计算的函数的多个实例。该函数采用一个类对象,因为该类包含shared_mutex
我通过引用传递它,所以所有线程都通过相同的对象访问类。
如果我尝试通过升压::线程启动功能(甚至只是一个)我得到的编译错误:如果我直接通过主调用函数传递具有互斥体的类对象以通过引用提升::线程
/usr/include/boost/thread/pthread/shared_mutex.hpp:173:9: error:
‘boost::shared_mutex::shared_mutex(boost::shared_mutex&)’ is private
BOOST_THREAD_NO_COPYABLE(shared_mutex)
^
/cl_shared.h:12:7: error: within this context
class cl_shared {
^
它工作正常。如何多次运行该功能?多线程读取/写入该类时,线程安全的互斥体就在那里。分解它看起来像:
class cl_shared {
public:
//constructor
cl_shared() { };
//functions here using the mtx
void hello() {
cout<<"hello"<<endl;
};
boost::shared_mutex mtx;
int aint;
};
cl_shared shared;
int main(int argc, char **argv) {
// XMA::mov_avg(shared, arg1); //does work
// boost::thread worker1(XMA::mov_avg, shared, arg1); //error: mutex is private
// boost::thread worker2(XMA::mov_avg, shared, arg1); //like to start it simultaneously;
//boost::thread worker1v2(XMA::mov_avg, boost::ref(shared), 0, avg_typ, pos_vel, w_leng, parse); //does compile, but is it ok?
}
功能看起来像:
//the function head:
void mov_avg(cl_shared &shared, int arg1){
//do sth.
}
http://www.boost.org/doc/html/thread/thread_management.html#thread.thread_management.tutorial.launching – llonesmiz
顺便说一句,它说'互斥'的复制构造函数是私人的。 – llonesmiz
http://stackoverflow.com/questions/22354972/boost-thread-use-of-deleted-function-error – llonesmiz