博弟弟丶 发表于 2021-4-26 20:30

学习C++的第十九天 线程1

本帖最后由 博弟弟丶 于 2021-4-26 20:36 编辑

#include <iostream>
#include <thread>//线程头文件
#include <windows.h>
                     
void xc1() {
        std::cout << "By吾爱破解论坛" <<std::this_thread::get_id() <<std::endl;//获取子线程ID
};

int main() {
       
       
        std::thread t1(xc1);//创建一个新的子线程 调用xc1这个函数

        t1.join();//使用join函数后,原始线程会等待新线程执行结束之后,再去销毁线程对象。
        //在一个线程中,开了另一个线程去干另一件事。
       

        std::cout << "By吾爱破解论坛一" << std::this_thread::get_id()<<std::endl;//获取主线程ID
        return 0;
};


#include <iostream>
#include <thread>//线程头文件
#include <windows.h>
                     
void xc1() {
        for (int i=0;i<100;i++)
        {
                std::cout << "I=" << i<<std::endl;
        }
};

int main() {
       
       
        std::thread t1(xc1);//创建一个新的子线程 调用xc1这个函数

        Sleep(100);//加个延时就能看到 for循环里面的内容如果不加 那么主线程就会直接结束那么肯定也不会执行输出I的值
        t1.detach();
        //使用detach函数后,那么新线程就会与原线程分离。
        //由于使用的是detch函数,在detch函数执行完成,主线程main函数结束并没有打印I的值
        //加个延时就能看到 for循环里面的内容如果不加 那么主线程就会直接结束那么肯定也不会执行输出I的值
        //一个子线程只能调用join()和detach()中的一个,且只允许调用一次。
        //这个jiondetach分情况调用

        std::cout << "By吾爱破解论坛一" << std::this_thread::get_id()<<std::endl;
        return 0;
};

朱朱你堕落了 发表于 2021-4-26 22:37

这是c++哪个版本的?创建线程不是createthread吗?第一次见std空间里的thread,之前学c ++时没见过这么创建的啊!c++哪个版本有这个功能?孤陋寡闻了。

9007 发表于 2021-4-26 22:41

厉害。加油

博弟弟丶 发表于 2021-4-27 16:06

朱朱你堕落了 发表于 2021-4-26 22:37
这是c++哪个版本的?创建线程不是createthread吗?第一次见std空间里的thread,之前学c ++时没见过这么创建 ...

createthread是API版本   这个是类的版本
页: [1]
查看完整版本: 学习C++的第十九天 线程1