互斥锁通信机制
基本原理
互斥锁以排他方式防止共享数据被并发访问,互斥锁是一个二元变量,状态为开(0)和关(1),将某个共享资源与某个互斥锁逻辑上绑定之后,对该资源的访问操作如下:
(1)在访问该资源之前需要首先申请互斥锁,如果锁处于开状态,则申请得到锁并立即上锁(关),防止其他进程访问资源,如果锁处于关,则默认阻塞等待.
(2)只有锁定该互斥锁的进程才能释放该互斥锁.
互斥量类型声...
分类:
编程语言 时间:
2014-08-15 10:47:48
阅读次数:
304
经常使用基调网络的同学,可能对基调网络对页面元素的性能展示感觉很好。它可以做到对一条URL做详细的检测,包括:阻塞时间、DNS解析时间、建立连接时间、SSL握手时间、发出请求时间、首包时间等。其实,我们也可以做到。比如Pythonpycurl库就可以做到对数据的收集,然后可以对..
分类:
编程语言 时间:
2014-08-15 02:47:54
阅读次数:
279
静态工具方法并发时候不能简单的用同步关键字来同步方法,因为静态方法是类级别的方法,锁定的是这个类class本身,这样的结果就是任何一个同步的静态方法运行,都会导致其他同步方法调用的阻塞。这个也是问题所在。这里给出一个简单的方法来避免这个问题:通过给每个方法一个锁..
分类:
其他好文 时间:
2014-08-14 20:55:19
阅读次数:
150
老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种...
分类:
其他好文 时间:
2014-08-14 13:23:58
阅读次数:
134
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种...
分类:
编程语言 时间:
2014-08-14 01:41:17
阅读次数:
289
众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样。 通常I/O操作都是有阻塞与非阻塞的两种方式。 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的I...
分类:
系统相关 时间:
2014-08-13 22:43:18
阅读次数:
532
针对单线程服务器模型的特点,我们可以对其进行改进,使之能对多个客户端同时进行响应。最简单的改进即是使用多线程(或多进程)服务器模型,在应用层级别,我们一般采用多线程模式。多线程能让多个客户端同时请求,并能几乎同时对这些请求进行响应,而不用排队一个一个处理,能同时为多个客户端提供一问一答的服务。
图2-6-1-2 多线程阻塞服务器模型
多线程服务器模型核心就是利用多线程机制,为每个...
分类:
编程语言 时间:
2014-08-13 22:34:47
阅读次数:
311
第四章 并行程序优化4.1 并行程序设计模式4.2 JDK多任务执行框架4.3 JDK并发数据结构4.4 并发控制方法4.5 锁的性能和优化4.6 无锁的并行计算1.非阻塞同步避免了基于锁的同步的缺陷,无锁算法没有锁竞争带来的系统开销,也没有线程间频繁调度带来的开销。CAS算法:包含3个参数CAS(...
分类:
编程语言 时间:
2014-08-13 18:42:26
阅读次数:
196
在写Activity的时候需要进行UI更新,遇到了一些问题,记录一下:1、单线程 vs 多线程。单线程的好处是逻辑简单,不需要考虑线程间通讯问题,坏处是在进行诸如下载、更新、读写的操作的时候会阻塞当前线程,造成假死现象,无论是用户体验还是测试监控都是十分糟糕的选择。因此在这里我把实际处理的过程用新的...
分类:
其他好文 时间:
2014-08-13 14:39:16
阅读次数:
209
一、概述:
BlockingQueue作为线程容器,可以为线程同步提供有力的保障。
二、BlockingQueue定义的常用方法
1.BlockingQueue定义的常用方法如下:
抛出异常
特殊值
阻塞
超时
插入
add(e)
offer(e)
put(e)
offer(e, time, unit)
移...
分类:
其他好文 时间:
2014-08-13 13:10:56
阅读次数:
388