本文主要是介绍C++多线程Thread——特殊构造情况,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在研究orbSlam2 的工程中遇到了一种比较奇怪的构造线程的方式。
伪代码如下:
std::thread* mptLocalMapping;class LocalMapping
{void localMapping::Run() //这个函数是没有输入参数的{//各种操作}
};LocalMapping* mpLocalMapper = new LocalMapping();mptLocalMapping = new thread(&LocalMapping::Run,mpLocalMapper);
可以看到这里的thread是传入了一个成员函数指针,在这种情况下,其后传入的首个参数必须是一个特定的对象,这个对象是定义了(或引用,或指向对象的指针)这个成员函数。
在这个例子中,thread(&fn, arg1,arg2,…)中的arg1的类型必须是LocalMapping 或者LocalMapping& 或者LocalMapping*
参考:http://www.cplusplus.com/reference/thread/thread/thread/
http://en.cppreference.com/w/cpp/thread/thread/thread
这篇关于C++多线程Thread——特殊构造情况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!