首页 > 其他分享 >学习笔记7

学习笔记7

时间:2023-10-28 22:12:18浏览次数:35  
标签:互斥 void 笔记 学习 并发 线程 pthread 进程

第四章 并发编程

这一章主要介绍了并发编程的相关内容,包括并行计算、顺序算法与并行算法以及并行性和并发性;解释了线程的原理机器相对于进程的优势,同时还进行了线程管理、并发编程的实际操作,让我们更加深刻地了解多任务处理、线程同步和并发编程的原理及方法。

并行计算

基于分治原则(如二叉树查找和快速排序等)的算法经常表现出高度的并行性,可通过使用并行或并发执行米提高计算速度。并行计算是一种计算方案,它尝试使用多个执行并行算法的处理器 更快速地解决问题。

井行性与并发性

并行算法只识别可并行执行的任务,但是它没有规定如何将任务映射到处理组件。在理想情况下,并行算法中的所有任务都应该同时实时执行。然而,真正的并行执行只能在有多个处理组件的系统中实现,比如多处理牉或多核系统。在单CPU系统中,一次只能执行一个任务。在这种情况下,同的任务只能并发执行,即在逻辑上并行执行。在单CPU系统中并发性是通过多任务处理来实现的。

线程

(1)线程原理

一个操作系统包含许多并发进程。在进程模型中,进程是独立的执行单元。所有进程均是在内核模式和用户模式下进行的。

内核模式下:各进程在唯一地址空间上执行,与其他进程是分开的,多个独立的进程共用同一个执行路径,当某进程必须等待某事件时,整个进程就会停止执行。

线程是某进程同一地址空间上的独立执行单元。创建某个进程就是在一个唯一地址空间创建一个主线程。

(2)线程优点

1.线程创建和切换速度更快

2.线程的响应速度更快

3.线程更适合并行计算

(3)线程缺点

1.由于地址空间共享,县城需要来自用户的明确同步

2.许多库函数可能对线程不安全

3.在单CPU系统上,使用线程解决问题实际上要比使用顺序程序更慢。

线程管理函数

(1)创建线程

`int pthread_create(pthread_t *thread_id,pthread_attr_t attr,void (func)(void), void *arg);```
(2)线程ID

int pthread_equal(pthread_t t1,pthread_t t2);
如果是不同线程,返回0;否则,返回非0。
(3)线程终止

void pthread_exit(void *status);
0退出值表示正常终止,否则为异常终止。
(4)线程连接

int pthread_join (pthread_t thread, void **status ptr);

线程同步

(1)互斥量
 最简单的同步工具是锁,它允许执行实体仅在有锁的情况下才能继续执行。在Pthread中,锁被称为互斥量,意思是相互排斥。在使用之前必须对他们进行初始化。
静态方法:定义互斥量m,并使用默认属性对其进行初始化。
          pthreaa_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
动态方法: 使用pthread_ mutex _init()函数,可通过attr参数设置互斥属性。
(2)死锁预防
 简单的死锁预防是对互斥量进行排序,并确保每个线程只在一个方向请求互斥量,这样请求序列中就不会有循环。
(3)条件变量
条件变量提供线程协作的方法。同样需要初始化,且方法同互斥量相同。
(4)信号量
信号量是进程同步的一般机制。比条件变量多一个计数器。
(5)屏障
 屏障是线程的集合点。当所有线程到达屏障时,所有线程重新开始执行。

标签:互斥,void,笔记,学习,并发,线程,pthread,进程
From: https://www.cnblogs.com/deyong/p/17794758.html

相关文章

  • 第九周Linux学习笔记
    本周的学习内容属实有点多(差点跟不上,浅浅吐槽一下),学习了第五章进程管理以及第六章I/O重定向。具体命令及其作用在下面一一列举。第五章:进程管理进程小tips:每个进程都有唯一的进程表示PID;进程有就绪态、阻塞态和运行态三个状态;进程有的是密集型有的是疏散型。1、“psaux”命令,......
  • 关于学习Mybatis-plus的认识
    1.实体类的类名和属性尽量一致,如果不一致需要用注解进行指定。2.mybatis-plus是把实体类的类名直接转换成小写到数据库查找,所以需要@TableName(value="表名")来指定表的名字进行查询@TableName("sys_user")publicclassUser{privateLongid;privateStringn......
  • 现代企业管理的部分复习笔记
    因为不是专业课学的比较随意,大概会分成四个部分,三个内容一个部分题,最近就要考试了,共勉格式问题显示不好  用word写的,链接如下我用夸克网盘分享了「现代企业管理.docx」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。链接:https://pan.quark.cn/s/aacef986......
  • 《信息安全与设计》第四章学习笔记
    《信息安全与设计》第四章学习笔记第四章并发编程并行计算导论顺序算法与并行算法顺序算法:所有步骤通过单个任务依次执行,每次执行一个步骤,当所有步骤执行完成时,算法结束。并行算法:cobegin-coend代码块来指定独立任务,所有任务都是并行执行的,紧接着代码块的下一个步骤将只在......
  • 学习笔记7
    目录知识点归纳第4章并行计算并行性和并发性线程线程同步苏格拉底挑战问题与解决方案实践过程知识点归纳第4章并行计算并行性和并发性并行算法只识别可并行执行的任务。CPU系统中,并发性是通过多任务处理来实现的。通常,并行算法只识别可并行执行的任务,但是它没有规定如何将......
  • AJAX学习(四)-(axios核心的原理)
    一、Promise1.定义Promise对象用于表示一个异步操作的最终完成(或失败)及其结果值我们用一张图来清晰的看Promise位于哪里2.好处1.逻辑更清晰2.了解axios函数内部运作机制3.能解决回调函数地狱问题3.使用语法及步骤示例代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacha......
  • 大数据的机器学习应用
    当谈到大数据时,机器学习扮演了至关重要的角色。它不仅能够处理庞大的数据集,还能从中提取有价值的信息,并为企业和组织提供深刻的洞察。本文将探讨大数据中机器学习的应用,以及如何使用Python实现一些基本的机器学习算法。什么是大数据的机器学习应用?大数据的机器学习应用是利用机器......
  • 20231327 司宏林《计算机基础与程序设计》第5周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第5周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第5周作业)这个作业的目标<关于机器语......
  • 第八周Linux教材第四章学习笔记——并发编程
     第四章 并发编程4.1并行计算导论在早期,大多数计算机只有一个处理组件,称为处理器或中央处理器(CPU)。受这种硬件条件的限制,计算机程序通常是为串行计算编写的。要求解某个问题,先要设计一种算法,描述如何一步步地解决问题,然后用计算机程序以串行指令流的形式实现该算法。在只有......
  • 【深度学习 | 概念】那些深度学习路上必经的 常见问题解决方案及最佳实践,确定不来看看
    ......