ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

多线程编程-1多线程基础

2021-03-01 10:00:23  阅读:171  来源: 互联网

标签:执行 互斥 取消 编程 基础 并发 线程 多线程


一、多线程的益处

■ 提高应用程序的响应
■ 更有效地使用多处理器
■ 改进程序结构
■ 占用较少的系统资源

二、多线程概念

1、并发性和并行性

  • 在单个处理器的多线程进程中,处理器可以在线程之间切换执行资源,从而执行并发
  • 在共享内存的多处理器环境内的同一个多线程进程中,进程中的每个线程都可以在一个单独的处理器上并发运行,从而执行并行

2、用户级线程状态

以下状态对于每个线程是唯一的。
■ 线程 ID
■ 寄存器状态(包括 PC 和栈指针)
■ 栈
■ 信号掩码
■ 优先级
■ 线程专用存储

3、线程调度

POSIX 标准指定了三种调度策略:

  • 先入先出策略(SCHED_FIFO):是基于队列的调度程序,对于每个优先级都会使用不同的队列。
  • 循环策略 (SCHED_RR) :与 FIFO 相似,不同的是每个线程都有一个执行时间配额。
  • 自定义策略 (SCHED_OTHER):默认的。

4、线程取消

一个线程可以请求终止同一个进程中的其他任何线程。目标线程(要取消的线程)可以延后取消请求,并在该线程处理取消请求时执行特定于应用程序的清理操作。

通过 pthread 取消功能,可以对线程进行异步终止或延迟终止。异步取消可以随时发生,而延迟取消只能发生在所定义的点。延迟取消是缺省类型。

5、线程同步

使用同步功能,可以控制程序流并访问共享数据,从而并发执行多个线程。
共有四种同步模型:
■ 互斥锁仅允许每次使用一个线程来执行特定的部分代码或者访问特定数据。
■ 读写锁允许对受保护的共享资源进行并发读取和独占写入。要修改资源,线程必须首先获取互斥写锁。只有释放所有的读锁之后,才允许使用互斥写锁。
■ 条件变量会一直阻塞线程,直到特定的条件为真。
■ 计数信号量通常用来协调对资源的访问。使用计数,可以限制访问某个信号的线程数量。达到指定的计数时,信号将阻塞。

标签:执行,互斥,取消,编程,基础,并发,线程,多线程
来源: https://blog.csdn.net/neko233/article/details/114253016

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有