1、并发
两个或者更多的任务(独立的任务)同时发生;一个程序同时执行多个独立的任务。
以往的计算机,单核cpu(中央处理器),某一时刻只能执行一个任务;由操作系统调度(分配时间片),每秒钟进行多次所谓的“任务切换”(上下文切换,需要保存数据),有时间开销,这是一种并发假象。
随着硬件发展,出现了多处理器计算机,用于服务器和高性能计算领域。
在一块芯片上有多核(多个)cpu:双核、四核、八核......能够实现真正的并行执行多个任务(硬件并发)。
2、进程
一个可执行程序执行,就是开启了一个进程。
3、线程
每个进程,都有一个主线程,这个主线程是唯一的,一个进程只能有一个主线程。当执行可执行文件时,这个主线程随着这个进程默默的启动起来了。主线程寿命跟随主进程,主线程用来执行main函数。
线程就是用来执行代码的,一条代码的执行通路。除了主线程外,我们可以通过代码来创建其他线程。每创建一个新线程,就可以在同一时刻。多干一个不同的事,运行效率高。
线程不是越多越好,每个线程都需要独立的堆栈空间,占据内存。线程之间的切换,要保存很多中间状态,耗费本该程序运行时间。建议不超过200-300个,根据项目实际情况。
4、并发的实现方式
多个进程实现并发。
进程间通讯:同一台电脑上:管道、文件、消息队列、共享内存。不在同一台电脑:socket通信技术。
一个进程,多个线程并发。
一个进程中的所有线程共享地址空间(共享内存)。线程间通讯:全局变量、全局指针、全局引用。存在数据一致性问题。
多个进程,多个线程并发
建议:优先考虑多线程技术手段



