std::thread 是 C++11 中的一个多线程库,用于创建和管理线程。使用 std::thread,可以将一个函数或可调用对象作为参数,创建一个新的线程来运行该函数或对象。
下面是 std::thread 的基本用法:
-
包含头文件#include < thread >
-
定义一个函数或可调用对象,该函数或对象将在新线程中运行。
-
创建一个 std::thread 对象,并将上述函数或对象作为参数传递给它。
-
启动线程,使用 std::thread 对象的成员函数 join() 等待线程结束。
下面是一个简单的示例代码,展示了 std::thread 的用法:
#include <iostream>
#include <thread>void hello() {std::cout << "Hello, world!" << std::endl;
}int main() {std::thread t(hello); // 创建一个线程,运行 hello 函数t.join(); // 等待线程结束return 0;
}
在上面的代码中,我们定义了一个名为 hello 的函数,该函数将在新线程中运行。然后我们创建了一个 std::thread 对象 t,并将 hello 函数作为参数传递给它。最后,我们调用了 t.join(),等待线程结束。
需要注意的是,std::thread 对象一旦被创建,就不能复制或赋值,只能移动。如果需要多个线程运行同一个函数,可以使用 std::ref() 来将函数包装成一个可调用对象,并将该对象作为参数传递给 std::thread。
另外,std::thread 还提供了一些其他的成员函数,例如 detach(),可以将线程分离,使其在后台运行,不再受到 join() 的限制。不过,使用 detach() 需要格外小心,因为分离的线程可能会在主线程结束时仍然在运行,从而导致程序崩溃或不可预料的行为。
备注:Linux中强制结束进程
pgrep 进程名 // 获取进程id
kill -9 进程id