1.Linux多线程概述1.1.概述进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段。这就造成进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少处理器的空转时间支持多处理器和减少上下文切换开销,也就出现了线程。线程通常叫做轻量级进程。线程是在共享...
分类:
编程语言 时间:
2015-04-10 21:45:28
阅读次数:
166
自己不太懂这一块,转发和大家一块分享!!!进程,由OS来管理,每个进程都有自己独立的内存空间,进程之间通讯主要是通过信号传递的方式来实现的,实现方式有多种,信号量,管道,事件等,任何一种方式的通讯效率都需要过内核,导致通讯效率比较低.由于是独立的内存空间,所以上下文切换的时候需要保存当先调用栈的信息...
分类:
编程语言 时间:
2015-03-31 22:00:33
阅读次数:
138
平常生活中就有很多例子可以去研究和理解并发和多线程。 比如: 做饭有几个任务(说简单点):煮饭、炒菜 同步就是,先去煮饭,等20分钟饭煮好了再去炒菜;我想现实生活中没有人去这样做,这样效率太低。 我没必要...
分类:
其他好文 时间:
2015-03-18 12:37:10
阅读次数:
152
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录.....
分类:
编程语言 时间:
2015-03-15 12:14:49
阅读次数:
180
线程是一个进程内的基本调度单位,也可以称为轻量级进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源,如文件描述和信号处理。因此,大大减少了上下文切换的开销。同进程一样,线程也将相关的变量值放在线程控制表内。一个进程可以有多个线程,也就是有多个线程控制表及堆栈寄存器,但却共享一个用...
分类:
编程语言 时间:
2015-03-01 13:14:19
阅读次数:
272
性能劣化随着代码写得越来越烂,程序运行时数据库操作更多、IO阻塞等待跟过、不必要的对象创建、GC回收更频繁,线程的上下文切换也更多,开销越来越多,所有因素综合起来,程序运行更慢,响应延迟加大。当到达临界点的时候,压垮骆驼的最后一根稻草出现了,系统直接崩溃。坏东西、副作用是会累积的。代码的实现一直保持...
分类:
其他好文 时间:
2015-02-15 20:31:40
阅读次数:
128
一. 何谓"原子操作":原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch).二. 为什么关注原子操作?1. 如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费昂贵性能开销的锁. - (巧妙...
分类:
其他好文 时间:
2015-02-15 12:00:10
阅读次数:
184
1、操作系统线程调度过程
每个线程都有一个上下文CONTEXT结构体,保存在线程的内核对象中,这个上下文中保存了线程上一次执行时CPU寄存器
的状态。每隔固定时间,Windows会查看所有当前存在的线程内核对象,其中只有一些是可调度的。Windows在可调度的
线程中选择一个,并将上次保存到线程上下文中的数据载入CPU寄存器中。(上下文切换)
CPU时间片到后,Windows移出这个线程,...
分类:
编程语言 时间:
2015-01-28 13:10:00
阅读次数:
220
Greenlet是给python使用的协程,evenlet就是使用的这个库。greenlet真正实现了协程之间的切换。python协程的实现(greenlet源码分析)这篇博文非常精彩的讲解了greenlet。整个代码一共就两千来行,因为涉及到上下文切换,读起来还是有点困难的。本文主要讲讲理解greenlet的要点..
分类:
其他好文 时间:
2015-01-20 06:44:36
阅读次数:
341
1 强制类只有一个实例2 提供全局的访问###为什么使用:```1 如果没有地方访问这个类,则不会创建实例2 静态类在main之前实例化, 可以尝试Lazy initialization3 派生单例类, 获得单例能力```###缺点:```1 代码变得难懂, 上下文切换等等2 增加了耦合度3 并行不...
分类:
其他好文 时间:
2015-01-16 18:31:11
阅读次数:
157