最新 | 最热门 | 最高评价

+0  Java多线程程序的测试

Tag: Testing | Java | Thread Weaver | 多线程 | 测试
四火 发于 2014年05月06日 23:47 | 点击: 2375 | 展开摘要
这个问题最初来自于一封公司内部的话题探讨邮件,再加上了一些我的理解。

首先,需要明确的是,用Java通常构建多线程安全的程序“非常”困难,如果还没有体会到“非常”的话,阅读《Java Concurrency in Practice》(中文名叫做《Java并发编程实战》,在我的书单里面,我认为它基本是最好的系统介绍Java并发的书了)可能可以改变你的看法。

多线程的基础

基础是王道。对于任何一门语言都是如此,有的基础部分是和语言无关的,也有一部分是和Java语言相关的。这

查看全文: http://www.udpwork.com/item/12218.html

+0  无锁HashMap的原理与实现

Tag: Java语言 | 程序设计 | Hash | HashMap | Java | Performance | 多线程 | 并发
onetwogoo 发于 2013年05月30日 21:31 | 点击: 3087 | 展开摘要
 (本文由onetwogoo投稿)

在《疫苗:Java HashMap的死循环》中,我们看到,java.util.HashMap并不能直接应用于多线程环境。对于多线程环境中应用HashMap,主要有以下几种选择:

使用线程安全的java.util.Hashtable作为替代。

使用java.util.Collections.synchronizedMap方法,将已有的HashMap对象包装为线程安全的。

使用java.util.concurrent.Concurren

查看全文: http://www.udpwork.com/item/9945.html

+0  疫苗:Java HashMap的死循环

Tag: Java语言 | 程序设计 | Hash | HashMap | Java | 多线程 | 并发
陈皓 发于 2013年05月10日 08:12 | 点击: 4113 | 展开摘要
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loop”可以看到很多人都在说这个事)所以,觉得这个是个普遍问题,需要写篇疫苗文章说一

查看全文: http://www.udpwork.com/item/9814.html

+0  多核与异步并行

Tag: 并行编程 | 多核 | 多线程编程 | 线程同步
Guancheng (G.C.) 发于 2013年01月21日 18:20 | 点击: 1661 | 展开摘要
原文发表于《程序员》杂志2012年第9期,文字略有修改。

我们在设计多线程程序时往往有很多性能指标,例如低延迟(latency),高吞吐量(throughput),高响应度(responsiveness)等。随着多核处理器上CPU核数的日益增加,如何高效地利用这些计算资源以满足这些设计目标变得越来越重要。这次向大家介绍的异步并行就是一种帮助实现低延迟、高吞吐量和高响应度的并行编程技术。

让我们先来看这样一个例子。在下面的程序中,我们有一个do_something()的AP

查看全文: http://www.udpwork.com/item/9409.html

+0  Java多线程发展简史

Tag: Coding Thinking | Recommended | Java | JDK | JSR | 历史 | 多线程
四火 发于 2012年09月15日 16:43 | 点击: 2071 | 展开摘要
这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问题。对于Java程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有不同收获。

 

引言

首先问这样一个问题,如果提到Java多线程编程,你会想到什么?

 

volatile、synchronized关

查看全文: http://www.udpwork.com/item/8196.html

+0  Transfer 2.0 介绍

Tag: mysql | 主从同步 | 主从延迟 | 事务 | 单表并发 | 多线程复制
丁奇 发于 2012年09月03日 18:22 | 点击: 2086 | 展开摘要
       Transfer是一个主从多线程同步工具,直接patch在MySQL中。2011年开发完成。于去年的12.12上线,并撑住高峰期主从,保证从库无延迟,使得应用能够直接从从库上读数据。

       对Transfer1.0背景有兴趣的同学可以看我以前的一篇博客。

新功能

       Transfer第一版本存在两个可改进的点:单表并发和事务支持。

a)      Transfer2.0支持单表并发,基本原理就是按照更新行的主键id (因此有一个限制是同

查看全文: http://www.udpwork.com/item/8604.html

+0  深入理解Linux用户空间的锁机制

Tag: 系统底层 | linux内核 | 多线程
editor 发于 2012年07月02日 16:21 | 点击: 2533 | 展开摘要
1.         缘起 

随着SMP(Symmetrical Multi-Processing)架构的流行和epoll类系统调用对非阻塞fd监视的支持,高性能服务器端的开发已经能够实现CPU计算和IO的分离。为了充分发挥CPU的计算能力,服务器端的设计必须要尽量减少线程切换。引起线程切换最重要的原因之一就是对mutex和semaphor等锁的使用。本文从计算机体系架构、操作系统的支持和mutex的实现彻底分析Linux用户空间mutex的实现,分析的源码版本是glib-

查看全文: http://www.udpwork.com/item/7604.html

+0  linux后端服务程序之信号处理

Tag: CDN | Linux开发 | daemon | linux信号 | signalfd | 多线程 | 数据传输
千石 发于 2012年06月03日 21:54 | 点击: 1911 | 展开摘要
信号就是通知某个进程发了某个事件,也称为软件中断。信号提供了一种处理异步事件的方法。信号通常是异步发生的,进程预先不知道信号准确发生的时刻。后端程序(daemon)往往需要提供7*24不间断的服务,因此,编程daemon程序时对信号的正确处理尤为重要。

下面和大家分享编写daemon程序时信号处理的注意事项,内容都来自Internet,只是进行了整理和总结。关于信号的基础只是请参考APUE。

常见的信号

SIGHUP 1 和终端的连接断开,发送该信号给控制进程。通常用此

查看全文: http://www.udpwork.com/item/8609.html

+0  云计算时代的多核开发

Tag: 业界评论 | 并行编程 | Big Data | 互联网 | 多核 | 多线程编程
Guancheng (G.C.) 发于 2012年01月22日 01:24 | 点击: 2586 | 展开摘要
注:原文发表于《程序员》杂志2011年第12期,略有删改。

云计算和多核这两大趋势正对软件开发者产生重大影响。近几年,多核逐渐成为主流:随着提升CPU核心频率越来越难,处理器厂商选择了更加容易实现的多核方案来继续提升硬件的性能。进入后PC时代,移动处理器也同样面临着性能的提升与功耗的控制这两大挑战,为了满足提升性能与控制功耗的需求,多核也正成为其以后发展的方向。另一方面,云计算也渐渐成为软件开发的大势。在云计算的生态系统中最主要的设备是“端”和“云”。所谓端包括移动设备(智

查看全文: http://www.udpwork.com/item/6734.html

+1  并行编程中的“锁”难题

Tag: 并行编程 | 多核 | 多线程编程 | 死锁 | 线程同步 | 锁竞争
Guancheng (G.C.) 发于 2011年10月02日 10:11 | 点击: 2758 | 展开摘要
注:本文发表于《程序员》2011年第8期并行编程专栏,略有删改。

在并行程序中,锁的使用会主要会引发两类难题:一类是诸如死锁、活锁等引起的多线程Bug;另一类是由锁竞争引起的性能瓶颈。本文将介绍并行编程中因为锁引发的这两类难题及其解决方案。

1. 用锁来防止数据竞跑

在进行并行编程时,我们常常需要使用锁来保护共享变量,以防止多个线程同时对该变量进行更新时产生数据竞跑(Data Race)。所谓数据竞跑,是指当两个(或多个)线程同时对某个共享变量进行操作,且这些操作中至少

查看全文: http://www.udpwork.com/item/5988.html

+0  浅析C++多线程内存模型

Tag: 并行编程 | C++1x | 多核 | 多线程内存模型 | 多线程编程
Guancheng (G.C.) 发于 2011年08月27日 11:39 | 点击: 2655 | 展开摘要
注:本文发表于《程序员》2011年第6期并行编程专栏,略有删改。

在即将到来的C++1x标准中,一个重大的更新就是引入了C++多线程内存模型。本文的主要目的在于介绍C++多线程内存模型涉及到的一些原理和概念,以帮助大家理解C++多线程内存模型的作用和意义。

1. 顺序一致性模型(Sequential Consistency)

在介绍C++多线程模型之前,让我们先介绍一下最基本的顺序一致性模型。对多线程程序来说,最直观,最容易被理解的执行方式就是顺序一致性模型。顺序一致性

查看全文: http://www.udpwork.com/item/5706.html

+0  js引擎(v8)中实现一个多线程(进程)实例

Tag: C/C++ | js | v8 | 多线程
lajabs 发于 2011年08月17日 13:12 | 点击: 1916 | 展开摘要
v8是google开发的一个js引擎,其性能非常出色,包括Chrome在内的开源产品都在使用它,同时我们知道Chrome采用的是多进程模式,本文主要是例举一个基于v8的多进程JS编程API。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

查看全文: http://www.udpwork.com/item/10908.html
|<<<123>>>| 一共3页, 27条记录