#include std::thread thread_object(callable) // 一个虚拟函数 void foo(int Z,int x = 0) { for (int i = 0; i < Z; i++) { cout << "线程使用函数指针作为可调用参数 第二个参数值:" << x << "\n"; } } // 可调用对象 class thread_obj { public: void operator()(int x, int y) { for (int i = 0; i < x; i++) cout << "线程使用函数对象作为可调用参数 参数2的值:" << y << "\n"; } }; 线程运行的函数指针或者函数对象只有一个参数的时候 运行顺序正常 如果加了第二个参数 执行顺序出现一些意料之外的结果 // 函数指针 thread th1(foo, 3,1); // 函数对象 thread th2(thread_obj(), 3,2); 线程 1 、2 、3 独立运行 线程使用函数指针作为可调用参数 第二个参数值:线程使用函数对象作为可调用参数 参数2的值:2 1 线程使用 lambda 表达式作为可调用参数 线程使用 lambda 表达式作为可调用参数 线程使用 lambda 表达式作为可调用参数 线程使用函数对象作为可调用参数 参数2的值:2 线程使用函数对象作为可调用参数 参数2的值:2 线程使用函数指针作为可调用参数 第二个参数值:1 线程使用函数指针作为可调用参数 第二个参数值:1 请按任意键继续. . .