windows下进程与线程
windows下进程与线程
Windows是一个单用户多任务的操作系统,同一时间可有多个进程在执行。进程是应用程序的运行实例,可以理解为应用程序的一次动态执行;而线程是CPU调度的单位,是进程的一个执行单元。一个进程可以有多个线程,而一个线程只能从属于一个进程。
进程包含文本、数据、堆栈片段一级进程自身的资源(比如进程创建的文件、管道、同步对象等)。由操作系统负责管理进程及其资源,与进程相关的信息被保存在一个被称作进程控制块的结构中。
线程是操作系统分配CPU时间的基本实体。在一个多线程的应用程序中,每一个线程都有自己的堆栈,并且可以独立地操作同一程序中的其他线程。
一般来讲,操作对象是线程。
进程与线程的最大区别就是进程有自己的地址空间,而线程没有,线程共享进程的地址空间。进程内的两个线程可以访问同一个数据片段,因此,通过使用该数据片段可以实现线程间的通信。
线程间通信一:全局变量,线程监督。利用volatile关键词修饰,要求编译器不要将该变量缓存到一个寄存器当中,即允许别的线程对该变量进行修改。操作过程就是在开启线程的时候令监督变量为1,同时在线程中监督此变量,然后当要关闭该线程的时候,在主程序(线程)中将监督变量改为0,因此,在线程函数中检测到该变量变为0之后,就退出。
线程间通信二:采用消息机制。因为windows程序设计中,应用程序的每一个线程都拥有自己的消息队列,这样,在线程之间就可以方便的通过消息来传递信息。操作过程是定义一个用户消息,#define WM_USERMSG WMUSER+100, 在适当的时候,在子线程中调用PostMessage函数,将消息发送至主线程,同时可以传递参数。最后在主线程中把消息映射到相应的处理函数中。
线程同步:主要有同步对象与等待函数。
根据上面的概念图只说明一个关于信号量的问题,这个问题在DSP的操作系统DSP/BIOS中也遇到过。信号量在创建的时候会设置初始值和最大值,每有一个线程占用共享资源时,信号量递减1,当信号量大于0时,说明信号量对象一直是有信号的,而当信号量减到0时,信号量对象变为无信号。就像图书馆资源一样,一共5本书,每人限取一本,每进来一人,递减一个,当5个人全在时,不允许人再进来。当信号量大于0,说明还有资源可用,可以放线程占用资源。实现资源空间的共享。
对于事件,已经用过。主要是通过创建事件,通过设定手动触发,单个对象等待函数来实现对线程的同步作用。
2015-9-20 艺少
windows下进程与线程的更多相关文章
- windows 下进程与线程的遍历
原文:http://www.cnblogs.com/Apersia/p/6579376.html 在Windows下进程与线程的遍历有好几种方法. 进程与线程的遍历可以使用<TlHelp.h&g ...
- windows下进程与线程剖析
进程与线程的解析 进程:一个正在运行的程序的实例,由两部分组成: 1.一个内核对象,操作系统用它来管理进程.内核对象也是系统保存进程统计信息的地方. 2.一个地址空间,其中包含所有可执行文件或DLL模 ...
- [笔记]linux下和windows下的 创建线程函数
linux下和windows下的 创建线程函数 #ifdef __GNUC__ //Linux #include <pthread.h> #define CreateThreadEx(ti ...
- windows 下进程池的操作
在Windows上创建进程是一件很容易的事,但是在管理上就不那么方便了,主要体现在下面几个方面: 1. 各个进程的地址空间是独立的,想要在进程间共享资源比较麻烦 2. 进程间可能相互依赖,在进程间需要 ...
- windows下进程间通信与线程间通信
进程间通信: 1.文件映射(Memory-Mapped Files) 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/ ...
- [转] linux 下 进程和线程的区别
1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...
- Linux下进程与线程的区别及查询方法
在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢?一.深入理解进程和线程的区别 1)两者概念 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进 ...
- 【windows下进程searchfilterhost.exe分析】
searchfilterhost.exe [进程信息] 进程文件: searchfilterhost.exe 进程名称: n/a 英文描述: searchfilterhost.exe is a pro ...
- linux 下 进程和线程的区别
1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...
随机推荐
- 建立component的多种方法
vue之component 在Vue.js中定义组件模板的七种方式 终于搞懂了vue 的 render 函数(一) Vuejs2.0学习(Render函数,createElement,vm.$slot ...
- webpack 4 的 proxy
第一种 接口有api的 setupProxy.js const proxy = require('http-proxy-middleware'); module.exports = function( ...
- 斐波那契数列 矩阵乘法优化DP
斐波那契数列 矩阵乘法优化DP 求\(f(n) \%1000000007\),\(n\le 10^{18}\) 矩阵乘法:\(i\times k\)的矩阵\(A\)乘\(k\times j\)的矩 ...
- Bzoj 3123: [Sdoi2013]森林(主席树+启发式合并)
3123: [Sdoi2013]森林 Time Limit: 20 Sec Memory Limit: 512 MB Description Input 第一行包含一个正整数testcase,表示当前 ...
- 04_Logstash安装
Logstash部署 1.部署JDK环境 2.下载Logstash源码包 $ wget https://artifacts.elastic.co/downloads/logstash/logstash ...
- 爬虫(六):Selenium库使用
一:Selenium简介 selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处 ...
- create an oauth app
github可以对自己的服务进行oauth认证,创建oauth认证的方式如下: github -> Settings -> Developer settings -> Develop ...
- Hadoop(1)---运行Hadoop自带的wordcount出错问题。
在hadoop2.9.0版本中,对namenode.yarn做了ha,随后在某一台namenode节点上运行自带的wordcount程序出现偶发性的错误(有时成功,有时失败),错误信息如下: // : ...
- Js 之生成二维码插件(jquery.qrcode.js)
一.下载 链接:https://pan.baidu.com/s/1cMjaCYQ_buZNT5XRRjuNTA提取码:myqm 二.效果图 三.代码 <!DOCTYPE html> < ...
- httpPostedFile实现WEBAPI文件上传
public void PostUpload() { var httpPostedFile = HttpContext.Current.Request.Files; foreach(string p ...