码农充电站--进程与线程

码农充电站--进程与线程

进程是容器,本身不是执行实体,线程才是执行实体。

进程由两部分组成,

1、内核对象,实质是一个数据结构,由操作系统管理

2、DLL和执行体(包含堆、栈、代码段)

32位的平台下,每个进程有4GB的虚拟内存。

由于进程的开辟和加载,操作系统都要切换上下文环境,因此消耗资源比较大。

而同一进程的多个线程是共享资源的。

于是首选是用多线程而不是多进程。

线程由两部分组成;

1、内核对象,实质是一个数据结构,由操作系统管理

2、线程自己的堆栈

Windows平台上线程分两种

工作线程  界面线程

两者本质上没太大区别,只是工作线程没有消息循环

由于 静态变量 和 全局变量 是放在内存静态区中

从汇编角度来解析就是数据段,独立于代码段,在编译时就已经分配内存

这样的话 那么就是多个线程共享这些资源。也就是说多个线程可以同时访问静态变量和全局变量

因此,多线程访问静态、全局变量时要注意线程安全问题

解决线程安全问题的方式有以下几种:

线程同步实现方式有互斥锁、事件对象、关键代码段

互斥锁和事件对象 属于内核对象  由操作系统直接管理

使用较复杂 占资源 较多

关键代码段是用户对象

使用简单 占资源少

但是容易造成 线程死锁

关键代码段里 包含另外一个关键代码时要 注意线程死锁问题

如下:

线程1   拥有对象A  抢占对象B

线程2   拥有对象B  抢占对象A

有个例子很好的描述线程死锁问题:

哲学家进餐

3个哲学家甲乙丙同时进餐,但每人只有一个筷子。因此每个人都不能吃饭。

若当中一个哲学家甲将自己筷子交出来给其他两位哲学家时,比如交给乙,那么乙就能进餐。

乙吃了一点后,将筷子交出来给丙,接着轮番使用。便能解决进餐问题。

但是这几个哲学家都比较自私和固执,谁也不让于是造成死锁。

看书、实践、思考、总结

转载请注明出处:http://www.cnblogs.com/zhuojun/

时间: 2024-10-28 10:10:03

码农充电站--进程与线程的相关文章

转:码农翻身全年文章精华

在码农翻身公众号写了一年多, 最大的体会就是:原创真心不易! 每天思考的最大问题就是: 下一篇文章写啥? 在大家的支持和鼓励下,还是坚持了下来,  回头看看走过的路,这一年过得还算充实. 很快就要过年了, 我也要休息一下, 春节后重新出发 ! 我把这一年来的精华文章整理了一下,作为节前的最后一篇, 欢迎转发分享. 再次感谢大家一年来的陪伴, 预祝大家春节快乐,万事如意! 大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP

从菜鸟到大牛的码农升职必学文章推荐

几年前我也是一个码农菜鸟,我也常常幻想着成为技术大牛. 如何减小与"大牛"的差距是我常常不得不面对的话题.今天从我走过来的路来总结一下成为大牛的技术之路. 先来看一张程序员的时间管理图. 除了时间管理,技术学习也是少不了的.下面推荐一下比较好的技术文章. 使用瀑布流插件 Masonry 进行瀑布流布局 业余草微信公众号上线了! 使用HTML5 Canvas实现火焰风暴动画 HTML5 实现3D翻转立方体 使用 HTML5 制作像素太空战机游戏 常用的Linux关机命令大全 5个常用的L

Java架构师之路:从Java码农到年薪八十万的架构师,最牛Java架构师进阶路线

从Java码农到年薪八十万的架构师,资深架构师大牛给予Java技术提升学习路线建议,如何成为一名资深Java架构师? 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择.架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析 程序员如何才能晋升为优秀的高薪架构师? 希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划. 架构师在一家公司有多重要 架构师在公司中担当着「IT架构灵魂人物

每周一书《码农翻身(好玩有趣的编程知识)》分享!

作者简介 刘欣(@码农翻身):15年的软件行业从业经验,前IBM系统架构师,擅长企业应用架构和设计,领导过多个企业级应用架构设计和开发工作. 内容简介 <码农翻身>用故事的方式讲解了软件编程的若干重要领域,侧重于基础性.原理性的知识. <码农翻身>分为6章.●第1章讲述计算机的基础知识:●第2章侧重讲解Java的基础知识:●第3章偏重Web后端编程:●第4章讲解代码管理的本质:●第5章讲述了JavaScript的历史.Node.js的原理.程序的链接.命令式和声明式编程的区别,以及

《码农翻身》读后感

1.计算机的世界 线程: 线程运行步骤:就绪.等待.运行 多线程并发问题 加锁.死锁问题,按照资源顺序申请锁 TCP/IP 不可靠通道进行可靠性传输 TCP的三次握手和四次挥手 滑动窗口协议 CPU CPU比内存快100倍,比硬盘快百万倍. 寄存器.程序计算器 局部性原理 进程 批处理系统 进程记录了寄存器的志.指令值.和消耗时间等 地址重定向 硬盘 磁道.扇区 文件.文件系统 I/O设备 总线和端口 轮询.中断 数据库 查询 并发访问 原子性问题 安全问题 socket 对TCP连接的封装 翻

一个故事讲完进程、线程和协程(操作系统基础知识)

原文链接:https://mp.weixin.qq.com/s/zuWRx1FGuBC-_HwuA7jK3w 转自:码农翻身(微信号:coderising) 很久以前,有两个程序,暂且称他们旺财和小强吧. 旺财和小强这两个程序都很长,每个都有十几万行. 他们两个的人生价值就是到CPU上去运行,把运行结果告诉人类. CPU是稀缺资源,只有一个,他们俩必须排着队,轮流使用. 旺财从头到尾执行完了,让出CPU, 让小强从头儿去执行. 人类把这种处理方式叫做批处理. 进程 长久以来,两人相安无事. 后来

程序员的迷茫之码农走的路在哪?

为什么许多公司不招大龄码农,这个问题最近很欢娱,初看这个问题时扎心了,终有一天,咱们都会成为大龄码农,那么首要界说下大龄码农,一般以为是35岁以上.按现在推算是1983年(含1983)前身世的.有许多还在一线开发,有些现已是中高层处理人员了.我接触到的这类朋友较多,有伙伴,有朋友,也有一些读者.并不是他们现在没有作业,而是他们在换岗去下家时,是个较长的进程,不想一些3-5年的小伙子,放到市面上,大把公司招人,坑位也多,大龄码农,得有适合匹配的岗位才行.大龄码农身价一般较高,不是一般公司给报酬给予

Python 中的进程、线程、协程、同步、异步、回调

进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生? 在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享<Python中的进程.线程.协程.同步.异步.回调>. 一.上下文切换技术 简述 在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状

Linux中四种进程或线程同步互斥控制方法

原文地址:http://blog.itpub.net/10697500/viewspace-612045/ 一.Linux中 四种进程或线程同步互斥的控制方法: 1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问. 2.互斥量:为协调共同对一个共享资源的单独访问而设计的. 3.信号量:为控制一个具有有限数量用户资源而设计. 4.事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始. 二.临界区(Critical Section) 保证在某一时刻只有一个线程