Qt C++ 并发,并行,多线程编程系列1 什么是并发

简介: 什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见。如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发。

什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见。如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发。



在计算机的系统里面,并发一般有两种,一种是通过任务切换来实现伪并发,这种实现方式是系统在一秒钟内切换运行多个任务,由于切换时间极短,使得我们感觉是多个任务同时进行,其实内部还是按照一定的顺序在执行每个任务。



对于单核处理器,也只能使用这种任务交换的方式来实现并发,



对于多核处理器,可以实现真正的物理并发。下面盗图演示一下

image.png

绿色表示一个独立的任务,红色表示另一个任务,当我们的处理是双核或者多核的时候,每个任务都在其中的一个核心上面独立运行,但是当我们的处理器为单核处理器时,这时系统将采用任务交换的方式来实现程序的并行执行,在这期间,会有部分时间使用来处理每个任务的保存和切换的,图中的灰色部分就是每个任务切换是的时间间隔,这个间隔是cpu将上个任务的状态保存,并且读取下个任务的状态。



计算机操作系统对于并发性和并行性的概念给出的定义是:

并行性是指两个或多个事件在同一时刻发生;

并发性是指两个或多个事件在同一时间段内发生。



所以,在我看来,并行,就是两个人操作两个机器,而并发就是一个人同时操作两个机器。




写的不好,欢迎指正。


image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

目录
相关文章
|
8月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
420 83
|
8月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
459 83
|
5月前
|
设计模式 缓存 安全
【JUC】(6)带你了解共享模型之 享元和不可变 模型并初步带你了解并发工具 线程池Pool,文章内还有饥饿问题、设计模式之工作线程的解决于实现
JUC专栏第六篇,本文带你了解两个共享模型:享元和不可变 模型,并初步带你了解并发工具 线程池Pool,文章中还有解决饥饿问题、设计模式之工作线程的实现
314 2
|
10月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
367 0
|
10月前
|
设计模式 运维 监控
并发设计模式实战系列(4):线程池
需要建立持续的性能剖析(Profiling)和调优机制。通过以上十二个维度的系统化扩展,构建了一个从。设置合理队列容量/拒绝策略。动态扩容/优化任务处理速度。检查线程栈定位热点代码。调整最大用户进程数限制。CPU占用率100%
586 0
|
10月前
|
存储 缓存 安全
JUC并发—11.线程池源码分析
本文主要介绍了线程池的优势和JUC提供的线程池、ThreadPoolExecutor和Excutors创建的线程池、如何设计一个线程池、ThreadPoolExecutor线程池的执行流程、ThreadPoolExecutor的源码分析、如何合理设置线程池参数 + 定制线程池。
JUC并发—11.线程池源码分析
|
11月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
678 14
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
310 8
|
安全 Java
线程安全的艺术:确保并发程序的正确性
在多线程环境中,确保线程安全是编程中的一个核心挑战。线程安全问题可能导致数据不一致、程序崩溃甚至安全漏洞。本文将分享如何确保线程安全,探讨不同的技术策略和最佳实践。
250 6