C++多线程基础理解

本文介绍了并发编程的基础概念,包括并发、进程和线程的定义。进程是执行中的可执行程序,线程是执行代码的单元,主线程与进程相伴而生。多线程允许在同一进程中同时执行多个任务,通过共享内存实现通信,但也带来了一致性问题。多进程则是不同进程间的并发,如账号服务器和游戏服务器。示例展示了如何在C++中创建线程。文章探讨了线程创建的开销及线程数量的优化。

概念

1.1 并发

定义:两个或者更多任务(独立的活动)同时发生(进行): 一个程序同时执行多个独立的任务;

原因: 主要可以同时进行多个事情,提高性能。

1.2 进程

进程就是运行起来的可执行程序。

1.3 线程

每个进程(执行起来的可执行程序), 都有唯一的一个主线程;当执行可执行程序时, 产生一个进程后,这个主线程就随着这个进程默默启动起来了,主线程和进程唇齿相依。

线程: 用来执行代码的。线程可理解为一条代码的执行通路。

除了主线程之外,可以通过写代码来创建其他线程,其他线程走的是别的道路,甚至可以去不同的地方。

每创建一个新线程,就可以再同一时刻,多干一个不同的事(多走一条不同的代码执行路径)。

1.4 多进程并发

比如账号服务器一个进程,游戏服务器一个进程。服务器进程之间存在通信(消息队列,共享内存。 word启动后就是一个进程,ie浏览器启动后就是一个进程。

1.5 多线程并发

线程:轻量级的进程。每个进程有自己独立的运行路径,但一个进程中的所有线程共享地址空间(共享内存),全局变量、指针、全局内存、全局引用都可以在线程之间传递,所以多线程开销远远小于多进程;

共享内存带来的新问题,数据一致性问题;线程A, 线程B向一个内存写数据得控制先后顺序。

线程并不是越多越好,每个线程,都需要一个独立的堆栈空间(大约1M),线程之间的切换要保存很多中间状态,切换也会耗费本该属于程序运行的时间;

线程创建

#include<thread>  //类标准库
#include<iostream>
using namespace std;

int main()
{
   thread my_thread;
   if(my_thread.joinable()) 
   {
       my_thread.join();//等待子线程
   }
   return 0; 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值