1:什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持 ...
分类:
编程语言 时间:
2019-03-04 21:19:51
阅读次数:
220
一、什么是自旋锁 一直以为自旋锁也是用于多线程互斥的一种锁,原来不是! 自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制。自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单 ...
分类:
其他好文 时间:
2019-02-26 23:32:51
阅读次数:
206
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-perf1/ Perf 简介 Perf 是用来进行软件性能分析的工具。 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能 ...
分类:
系统相关 时间:
2019-01-27 21:32:31
阅读次数:
207
1. 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。 缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的运算任务都设计到同一块内存区域时,将可能导致各自的 ...
分类:
编程语言 时间:
2018-12-28 21:12:14
阅读次数:
211
目录 线程的优势 线程的风险 JAVA中线程创建方式 线程的调度 线程的状态 线程的优势 1 发挥多处理器的强大能力(CPU基本调度单位是线程,如果在单核下,使用多线程可以提高吞吐量,多核下,使用多线程能更高的利用CPU资源) 2 建模的简单性 3 异步事件的简化处理 4 响应更灵敏的用户界面 线程 ...
分类:
编程语言 时间:
2018-12-22 22:04:22
阅读次数:
208
操作系统 一、基本特征: 1.并发:在一段时间能运行多个程序。 并行:同一时刻能运行多个指令,需要硬件支持,如同多流水线或多处理器。 操作系统通过引入进程和线程,使得程序能够并发运行。 2.共享:系统中的资源可以被多个并发进程共同使用。 两种共享方式:互斥共享--又称为临界资源,例如打印机,在同一时 ...
分类:
其他好文 时间:
2018-12-16 18:45:22
阅读次数:
173
一.与CUDA相关的几个概念:thread,block,grid,warp,sp,sm。 sp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理 sm:多个sp加上其他的一些资源组成一个sm, stre ...
分类:
编程语言 时间:
2018-12-01 16:03:55
阅读次数:
291
在前两篇博客中我们介绍了并发编程 volatile应用与原理和并发编程 synchronized的实现原理(二),接下来我们介绍一下CAS自旋锁相关的知识。一、自旋锁提出的背景由于在多处理器系统环境中有些资源因为其有限性,有时需要互斥访问(mutual exclusion),这时会引入锁的机制,只有 ...
分类:
其他好文 时间:
2018-11-15 14:33:37
阅读次数:
215
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 学习Go一部分是兴趣,一部分是为了通过熟悉另一种语言来接触更多的应用场景。 安装步骤如下: 1、 ...
分类:
编程语言 时间:
2018-11-14 16:41:07
阅读次数:
283
由于cPython的gill,多线程未必是CPU密集型程序的好的选择。 多线程可以完全独立的进程环境中运行程序,可以充分利用多处理器。 但是进程本身的隔离带来的数据不共享也是一种问题,线程比进程轻量级。 1、Multiprocessing 0 10000000 1 10000000 2 100000 ...
分类:
编程语言 时间:
2018-11-13 02:59:11
阅读次数:
198