c++ thread以及createthread方法
示例:
void test(int times) { // 子线程睡眠times秒 this_thread是当前子线程 this_thread::sleep_for(chrono::seconds(times)); std::cout << "hellow thread1" << endl; } int main() { // 设置一个子线程执行的函数test,并且test函数的参数是2 // 在创建子线程之后就已经开始执行这个子线程了 std::thread t(test, 2); // 代表主线程会阻塞,等待子线执行完成之后主线程才会继续执行 t.join(); // 代表设置此子线程为分离线程,即使主线程执行完成之后, // 即使主线程结束,子线程未执行也不会结束。当主线程结束时,由运行时库负责清理与子线程相关的资源。 //t.detach(); std::cout << "hellow main" << endl; return 0; }
结果:
hellow thread1
hellow main
注意:
std::thread变量的声明周期结束时,会调用std::thread::~thread()析构函数,触发了内部的terminate()函数,从而导致进程闪退。因为创建std::thread对象后,如果没有调用对应的join()或者detach()函数,在其析构函数中就会触发terminate()函数,所以根据实际业务情况一定要使用join()或者detach()函数。
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术