进程与线程

//一:并发、进程、线程的基本概念和综述
//并发和线程,进程要求必须掌握;
//(1.1)并发
//两个或者更多的任务(独立的活动)同时发生(进行);一个程序同时执行多个独立的任务;
//以往计算机单核cpu,某一时刻只能执行一个任务,实现多任务的方式是由操作系统调度,时间轮盘等
//引起假象的并发,这种切换是上下文切换,又时间开销
//多处理器计算机,用于服务器和高性能计算
//台式机:多核cpu 能实现正真的并行 同时执行多个任务(任务数量少于核的数量)
//使用并发的原因:主要是同时可以做多个任务 提高性能

//(1.2)可执行程序
//磁盘上的一个文件:Windows下,扩展名为exe。Linux下,is -la ,rwxrwxrwx(x执行权限)

//(1.3)进程:可执行文件是可以执行的,
//Windows下双击一个可执行程序来运行。Linux下 ./文件名
//进程就是一个可执行程序运行时,就叫创建一个进程

//(1.4)线程
//a)每个进程是执行的可执行程序,都有一个主线程,这个主线程是唯一的,也就是一个进程中只能有一个主线程
//当实行一个可执行程序,产生一个进程后,主线程就随着进程启动
//实际上运行程序的时候,是进程的主线程来执行(调用)main函数中的代码
//主线程与进程必然一起运行一起结束
//线程:执行代码的

//多线程(并发)
//线程不是越多越好,每个线程都需要独立的堆栈空间,线程间的切换要保存很多中间状态
//切换会消耗本该属于程序运行的时间


//并发的实现方法
//两个或者更多的任务(独立的活动)同时发生(进行);
//实现并发的手段:
//a)通过多个进程实现并发
//b)在单独的进程中创建多个线程来实现并发;自己写代码来创建除了主线程之外的其他线程


//(2.1)多进程并发
//word启动后就是进程;ie浏览器启动也是进程
//账号服务器,游戏逻辑服务器。服务器进程之间的通信
//进程间通讯:(同一个电脑上)管道,文件,消息队列,共享内存;
//不在同一电脑上:socket通信技术


//(2.2)多线程并发:单个进程中创建了多个线程
//轻量级的进程,每个线程都有自己独立的运行路径,但是一个进程中所有线程共享地址空间(共享内存);
// 全局变量,指针,引用都可以在线程之间传递,所以使用多线程开销远远小于多进程
//共享内存带来新问题:数据一致性问题:线程a 线程b;优先考虑多线程技术而不是多进程

//(3)c++11新标准线程库
//以往多的线程不能跨平台

原文地址:https://www.cnblogs.com/ymj11/p/13854463.html