本人设计了一个高效读写锁,可实现多个线程读一个线程写的锁,应该比Delphi自带的读写锁高效,本人没有做对比测试。 本文的锁不可以在一个线程里重入,否则会锁死,另外读写锁最多支持65535个线程同时读。 ...
由于本人水平与表达能力有限,有错误的地方欢迎交流与指正。
1 简介
可重入读写锁时基于AQS实现的,典型的使用方法如JDK1.7中的示例:
class RWDictionary {
private final Map m = new TreeMap();
private final ReentrantReadWriteLock rwl =...
分类:
编程语言 时间:
2016-03-31 11:06:14
阅读次数:
262
android线程消息传递机制——Looper,Handler,Message 在引入这些概念之前,我们先了解一下引入这些机制的背景。 出于性能优化的考虑,Android的UI操作并不是线程安全的(如果你不懂什么是线程安全,可以阅读一下<一起探究多进程与多线程>里的数据安全与可重入),这意味着如果有
分类:
移动开发 时间:
2016-03-11 14:06:25
阅读次数:
166
C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是:(1)为Lua设计C函数库时,导致不可重入;(2)不是所有的Lua值都能很好的保存到C变量中。那么可不可以将值保存在Lua全局变量里面呢,可以,Lua就提供了一个独立的被称为registry的表,但是Lua代码本身不能访问它。...
分类:
其他好文 时间:
2016-02-25 12:03:31
阅读次数:
143
1.如何设计一个功能更独立的积分管理系统? 2.如何把现有的加解密模块做得更稳固(看看SDK里的AES算法是如何实现的)。如何防止多线程重入,Java最多能开多少个线程? 3.系统学习一下各种加密算法(Js版本)。 4.系统学习一下HTTP协议,工业的各种协议的优缺点也作一个总结。 5.看看还能不能
分类:
其他好文 时间:
2016-02-21 00:19:05
阅读次数:
165
我们已经知道,对公共资源进行互斥访问,可以使用Lock上锁,或者使用RLock去重入锁。 但是这些都只是方便于处理简单的同步现象,我们甚至还不能很合理的去解决使用Lock锁带来的死锁问题。 要解决更复杂的同步问题,就必须考虑别的办法了。 threading提供的Condition对象提供了对复杂线程
分类:
编程语言 时间:
2016-02-03 01:54:21
阅读次数:
179
QThread 继承 QObject.。它可以发送started和finished信号,也提供了一些slot函数。 QObject.可以用于多线程,可以发送信号调用存在于其他线程的slot函数,也可以postevent给其他线程中的对象。之所以可以这样做,是因为每个线程都有自己的事件循环。 在进行下
分类:
编程语言 时间:
2016-02-01 20:32:58
阅读次数:
264
可重入和线程安全 可重入和线程安全这两个术语,经常出现在计算机编程中,用于指明类和函数在多线程程序中的使用。 可重入:若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。 若一个函数是可重入的,则该函数:
分类:
编程语言 时间:
2016-02-01 20:28:19
阅读次数:
193
在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占锁的实现。它继承自Dong Lea的AbstractQueuedSynchroni...
分类:
编程语言 时间:
2016-01-08 00:32:56
阅读次数:
581