(五)多线程编程

一、多线程简介
1、操作系统下的并行执行机制
(1)并行就是说多个任务同时被执行。并行分微观上的并行和宏观上的并行。
(2)宏观上的并行就是从长时间段(相对于人来说)来看,多个任务是同时进行的;微观上的并行就是真的在并行执行。
(3)操作系统要求实现宏观上的并行。宏观上的并行有2种情况:第一种是微观上的串行,第二种是微观上的并行。
(4)理论来说,单核CPU本身只有一个核心,同时只能执行一条指令,这种CPU只能实现宏观上的并行,微观上一定是串行的。微观上的并行要求多核心CPU。多核CPU中的多个核心可以同时微观上执行多个指令,因此可以达到微观上的并行,从而提升宏观上的并行度。

二、进程和线程的区别和联系
(1)进程和线程是操作系统的两种不同软件技术,目的是实现宏观上的并行(通俗一点就是让多个程序同时在一个机器上运行,达到宏观上看起来并行执行的效果)。
(2)进程和线程在实现并行效果的原理上不同。而且这个差异和操作系统有关。譬如windows中进程和线程差异比较大,在linux中进程和线程差异不大(linux中线程就是轻量级的进程)。
(3)不管是多进程还是多线程,最终目标都是实现并行执行。

三、多线程的优势
(1)前些年多进程多一些,近些年多线程开始用得多。
(2)现代操作系统设计时考虑到了多核心CPU的优化问题,保证了:多线程程序在运行的时候,操作系统会优先将多个线程放在多个核心中分别单独运行。所以说多核心CPU给多线程程序提供了完美的运行环境。所以在多核心CPU上使用多线程程序有极大的好处。

多核CPU跑多线程程序,要注意多线程同步,在线程之间通信的时候用到一些共享变量,这些共享变量需要同步,多个线程不能同时访问同一个共享变量,访问之前要申请,获取访问权限,再没被占用的情况下可以获取到访问权限,然后再进行操作,这就是多线程同步和锁的问题。

转载于:https://www.cnblogs.com/zhangshenghui/p/5903445.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择题_一级造价师选择题的分值是多少

一级造价工程师考试的选择题分为单选题和多选题,每科单选题为60题,每题一分;多选题为20题,每题两分,总分100分。一级造价师选择题的分值一级造价工程师考试共有《建设工程造价管理》、《建设工程计价》、《建设工程技术…

前端学习(2136):使用es6模块化出现Access to script at ‘file:///... ..from origin ‘null‘ has been blocked。。。错误

为什么会跨域? 因为你是在本地打开的文件,而file协议并不支持http, data, chrome, chrome-extension, https这些协议是支持跨域请求的而当你在某盘符位置下直接打开一个网页(script标签中引入了某地的某个js文件),则在浏览器地址栏呈现如下&…

2017年什么命_所谓“佛系”,真的不是什么都不做!

文 | 新宇姐姐 猫咪de生活观在这匆忙的世道中,人心浮躁,急不可耐。这喧嚣的世界车水马龙,我们为了生活,三点一线的忙碌奔波。城市很繁华,容易让人迷失;尘世很奔波,容易让人疲倦。不由得让我们想…

洛谷 P3392 涂国旗

P3392 涂国旗 题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗。(毛熊:阿嚏——) 从最上方若干行(>1)的格子全部是白色的。 接下来若干行(&…

flask 接口 让别人能访问_flask搭建一个前后端分离的系统

我们通常说三端,pc端,android端和ios端。如果前后端不分离,相当是要做三套系统。如果前后端分离的话,可以共用一个后端,前端各自做自己的,不用管后端。前后端不分离在前后端不分离的应用模式中,…

SpringMVC下5中参数类型传递

1、普通参数 //普通参数:请求参数名与形参名不同RequestMapping("/commonParamDifferentName")ResponseBodypublic String commonParamDifferentName(RequestParam("name") String username, int age){System.out.println("普通参数传递:username:&qu…

centos 没有nmtui命令_Linux free 命令

在Linux/Unix 系统上,free是一个很受系统管理员欢迎的命令,它是一个功能强大的工具,他能以一种易读的方式把内存使用情况展示出来free 展示了系统中空闲和已经使用了的物理内存、交换内存以及内核的缓冲区和页面缓存,所有展示的信…

laravel 队列学习

s d f大撒发转载于:https://www.cnblogs.com/toyanglei/p/5911707.html

spring中注解来创建bean

一、 核心配置文件中的组件来扫描对应包下面的所有类来匹配。 当我们使用ApplicationContext实例化的对象调用getBean函数获取bean的时候,内部时根据Component内的值来确定创建哪个对象: Component中的值就类似之前bean配置中id的作用一样。 二、纯注解…

django设置超级管理员_Django的简介与安装

Django的简介与安装Django 是用 Python 开发的一个免费开源的 Web 框架,可以用来快速搭建优雅的高性能网站。它采用的是“MVC”的框架模式,即模型 M、视图 V 和控制器 C。 Django 最大的特色,在于将网页和数据库中复杂的关系,转化…

操作目录下的文件或目录

1、显示/var目录下所有以l开头,以一个小字母结尾,且中间出现一位数字的文件或目录; # ls /var/l*[[:digit:]]*[[:lower:]] 2、显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录; …

SpringMVC的准备工作

一、 先通过Maven创建一个webapp项目 创建完成之后在pom文件中设置一些基本的信息&#xff1a; 1、打包方式 <packaging>war</packaging> 以war包的形式打包 2、相关依赖 现阶段只有3个&#xff1a;SpringMVC、thymeleaf与Spring整合、ServletAPI <dependencie…

postman安装报错 无法定位_接口测试工具postman安装及使用

目前的postman插件如果想正常使用&#xff0c;必须安装Postman Interceptor插件&#xff0c;这样才能直接使用chrome浏览器的cookie等信息&#xff0c;否则postman是无法完成老版本的功能的。直接使用chrome appstore安装是没有问题的&#xff0c;但是如果是离线安装&#xff0…

SpringMVC之注解RequestMapping

一、RequestMaapping的基本介绍 RequestMaapping的功能就是将请求和处理请求和处理请求的控制器关联起来&#xff0c;建立映射关系&#xff0c;当DispathcerServlet接收到请求&#xff0c;会从Controller中找对应的方法来处理该请求。 eg: Controller RequestMapping("/…

UVa11988 Broken Keyboard(练习链表使用)

向量和数组的优势是可以随机的存取元素和在末尾添加删除元素&#xff0c;而当插入元素时&#xff0c;需要移动大量的数据&#xff0c;消耗大量的时间。而链表的优势是可以在O(1)删除和插入数据。所以在频繁移动元素时&#xff0c;可以使用链表。 分析&#xff1a;如果用一个数组…