上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,如今来个复杂点的。这个问题涉及到线程的同步和相互排斥,是一道很有代表性的多线程同步问题,假设能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。程序描写叙述:主线程启动10个子线程并将表示子线程...
分类:
编程语言 时间:
2014-07-24 22:03:42
阅读次数:
237
Darwin Streaming Server 是一个开放源代码的streaming server,对于streaming server的编程和软件结构有着一定的参考价值,它是使用C++写的,其中的并发模式的核心就是Task类,下面写一下我的理解:多任务的程序常常采用线程+同步阻塞IO的模式, 每个...
1. 线程基础1.1. 线程状态线程有5种状态,状态转换的过程如下图所示:1.2. 线程同步(锁)多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线程...
分类:
编程语言 时间:
2014-07-23 14:55:06
阅读次数:
402
接昨天谈及的线程同步问题,今天介绍一个比较简单的类,Interlocked。它提供了以线程安全的方式递增、递减、交换和读取值的方法。它的特点是:1、相对于其他线程同步技术,速度会快很多。2、只能用于简单的同步问题。比叫好理解,不再赘述,给一个我们常用的单例模式的 Interlocked 实现: .....
分类:
编程语言 时间:
2014-07-23 11:53:56
阅读次数:
278
开篇语:上班以后,烦恼少了,至少是没有什么好烦的了,只要负责好自己的工作就可以了,因此也有更多的时间去探索自己喜欢的程序。买回来的书已经看了一半,DEMO也敲了不少,昨晚终于在这里开BLOG,记录一些读书笔记。以我自己的经验来看,写笔记、测试、体会是加深理解的利器,往往起到事半功倍的效果。这几天在看...
分类:
编程语言 时间:
2014-07-22 22:47:56
阅读次数:
304
一:J2SE面向对象-封装、继承、多态内存的分析递归集合类、泛型、自动打包与解包、AnnotationIO多线程、线程同步TCP/UDPAWT、事件模型、匿名类正则表达式反射机制2:数据库(Oracle或者MySQL)SQL语句多表连接,内外连接, 子查询等管理表、视图、索引、序列、约束等树状结构存...
分类:
其他好文 时间:
2014-07-22 22:44:53
阅读次数:
253
package多线程;
publicclassThreadcommunicateSafe1{
publicstaticvoidmain(String[]args){
Info3mess=newInfo3();
Input3in=newInput3(mess);
Output3out=newOutput3(mess);
newThread(in).start();
newThread(out).start();
}
}
//1,等待唤醒机制实现Input线..
分类:
编程语言 时间:
2014-07-21 12:21:24
阅读次数:
228
临界区Critical Section(CS) 不可跨进程,效率高事件 Event 使用内核对象,可跨进程,用于通知互斥量 Mutex 使用内核对象,可跨进程,用户互斥信号量 Semaphore 使用内核对象,可跨进程,有限数量资源http://blog.csdn.net/column/deta.....
分类:
编程语言 时间:
2014-07-21 09:37:54
阅读次数:
294
二元信号量,多元信号量,互斥量,临界区。其它包括读写锁,条件变量。-1:二元信号量,适合与只能被一个线程独占访问的资源。当二元信号量处于非占用状态时,第一个试图获取该二元信号量的线程会获得该锁,并将二元信号量重置为占用状态,在未释放该锁前,其它所有试图获取该二元信号量的线程将会等待。-2:多元信号量...
分类:
编程语言 时间:
2014-07-19 14:17:46
阅读次数:
219
也许,只需这一篇文章,便能让你全面的认识操作系统! 在阅读本文之前,推荐阅读“自己动手制作4位计算机”。目录:1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。5. 线程的实现方式. (用户线程与内核线程的区别)6. ....
分类:
其他好文 时间:
2014-07-19 08:39:08
阅读次数:
329