C++多线程

最近要写Al五子棋所以要学学多线程,总结了一些多线程的知识点
**1.并发(提高性能):一个程序同时执行多个任务(独立的任务)同时进行:一个程序同时执行多个任务
。以为单核cpu 通过任务切换(并发假象),每次切换要耗费时间(每次切换要保存以往的信息)
2.可执行程序:在Windows下,扩展名为.exe的文件
3.进程:可执行程序运行起来,就创建了一个进程
4.线程:一个进程只有一个主线程(main函数就可看作主线程),线程可看作时一个执行代码的通路,每个线程都可看作一条通路
5.多线程(并发):线程不是越多越好,每创建一个线程都需要一个独立的堆栈空间。一个进程中的所有线程共享内存空间(全局变量,指针,引用),可以在线程中传递。缺点:存在覆盖内存的问题,也就是存在线程先后顺序的一致性问题
6.创建线程有三种方法:
1)利用函数创建线程:thread时标准库的类,类的对象就是创建一个线程,接受一个可调用对象
这个在这里插入图片描述
join():阻塞主线程,让主线程等待子线程,与子线程汇合平行 共同执行(可控制的)
如果我创建了多个子线程,让主线程等待子线程执行完毕,在执行主线程,即全部共同平行执行,这种方法不好,所以引入了detach()函数。
detach():与主线程分离,失去与主线程的联系,即主线程与子线程各顾各的(失去控制,不可控),由运行时库(后台)释放子线程的对象

2)用类创建线程
在这里插入图片描述
3)利用labda创建线程
在这里插入图片描述
****线程Id:每个线程都对应这一个数字,数字都不同,用用std::this_thread::get_id()来获取
创建多个线程:
在这里插入图片描述但是我们有时候需要开多个线程,怎么办尼?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值