启动没有线程实例名称的线程
Start thread without thread instance name
之间有什么区别
MyClass* myClass = new MyClass;
std::thread myThread( &MyClass::MyMemberFunction, myClass );
和
std::thread( &MyClass::MyMemberFunction, myClass );
附言:试图使用第二种方法将boost::asio::io_service放入单独的线程是行不通的。但第一个确实如此。如果将std更改为boost,这两种方法都有效。
窗口7。MSVS 12.0。
第一个创建一个线程对象,您必须在某个点分离或连接该对象。
第二个创建并销毁一个临时线程,因为你没有分离或加入程序而终止程序。Boost允许这样做,在销毁时自动分离线程;但这种行为可能会导致细微的错误,因此标准库会迫使您做出明确的选择。
如果你真的想要一个"火和忘记"线程,你可以做
std::thread( &MyClass::MyMemberFunction, myClass ).detach();
但通常最好让线程对象在合适的时间加入,尤其是当您计划在某个时刻加入delete myClass
时。
相关文章:
- 使用包含互斥锁的类的方法实例化 cpp11 线程
- 如何制作线程本地库实例
- 在任何地方对C++中所有并行线程中的所有锁定和解锁实例使用相同的 std::mutex 和 lock 对象
- 单一实例对象是否通过线程安全返回shared_ptr
- 为什么当我在构造函数中创建线程时,实例化对象和对象的指针的行为不同
- 当实例化两次时,C 提升线程会导致分割故障
- C++/Clr 中C++全局实例上的多线程
- 完全删除 QApplication 实例并在另一个线程中重新创建它
- C++ - 在 main() 方法内的类实例中创建一个线程并调用 Sleep()
- 如何为每个实例设置非静态线程本地变量
- 是否可以将对象实例移至QT项目中不同代码点的不同线程
- std::class 实例的线程
- 在 QWidgets 线程的实例上运行 lambda 函数槽
- 在类的不同实例的不同线程中使用"pcl::visualization"
- 启动没有线程实例名称的线程
- 是静态boost::wregex实例线程安全的
- 每个线程一个类实例,C++11
- 类的实例是否仍在同一进程内的线程之间共享相同的静态成员
- 'n'提升:线程实例执行'm'作业
- std::线程实例计数不等于实际应用程序线程计数