码迷,mamicode.com
首页 >  
搜索关键字:加锁    ( 2232个结果
单例模式
今天看设计模式的时候,一个同事考了个我单例模式的实现方法,我回答了2中,一个是“饿汉模式”,一个是“懒汉模式”+双重检测加锁。但同事给了我另一种方法“枚举单例”,个人没有使用过,不是很了解,但是从枚举线程安全看是没有问题的。所以上网查了下“枚举单例”,所以把在网络中看到的单例模式的实现方法总结。下....
分类:其他好文   时间:2015-04-02 18:30:35    阅读次数:146
做了个弱统计,写入到文件中,引起并发问题,加锁解决
开始是使用file_get_contents,和file_put_contents()读取和写入文件,结果当同一时间大量请求时,文件内容就会出现重置为空的现象,导致原始内容丢失网上找了个解决办法,经修改如下:function pageCount($fileName){ if ($fp = fo...
分类:其他好文   时间:2015-03-31 19:36:18    阅读次数:153
MySQL-乐观锁
悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有...
分类:数据库   时间:2015-03-31 19:33:14    阅读次数:233
MySQL-锁研究
表级:引擎 MyISAM, 理解为锁住整个表, 锁定期间, 其它进程无法对该表进行写操作, 如果是读锁, 其他进程可以同时读, 如果是写锁, 则其它进程则读也不允许行级:引擎 INNODB, 单独的一行记录加锁, 其它进程还是可以对同一个表中的其它记录进行操作页级:引擎 BDB, 表级锁速度快, 但...
分类:数据库   时间:2015-03-30 13:11:13    阅读次数:207
SVN与TortoiseSVN实战:文件加锁详解
硬广:《SVN与TortoiseSVN实战》系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主。本篇详解使用TortoiseSVN对文件进行加锁和解锁的技巧,其中涉及到了之前介绍的SVN属性知识,关于属性可以翻看《SVN与Tortoi...
分类:其他好文   时间:2015-03-29 13:39:00    阅读次数:986
线程同步
原子操作互斥mutex相互排斥的意思,它是一种锁或者信号灯。互斥用来保护多个线程共享的数据和结构,不会被同时修改,一个互斥锁只能有两种状态:locked 枷锁unlocked 解锁加锁后互斥不让其他线程访问。任何时刻只能有一个线程来掌握某个互斥上锁。一个线程如果试图在一个已经加锁的互斥上再加锁,这个...
分类:编程语言   时间:2015-03-27 23:51:20    阅读次数:235
Java并发学习笔记(九)-原子类AtomicInteger
AtomicInteger能够保证对一个整型的操作是原子性。像i++这个操作不是原子操作,存在竞态条件,所以需要加锁,但是加锁的性能不高,如果仅仅为了对一个整数加1。我们来看下他的实现。 private volatile int value; AtomicInteger本身持有一个整型变量,所有的操作都是基于这个变量的。变量由violate修饰,这个变量是保证可见性的,具体可见另一...
分类:编程语言   时间:2015-03-27 22:24:40    阅读次数:176
单例模式(Singleton Pattern)
单例模式确保一个类只会有一个实例,而且会提供一个全局访问点,特别用于资源敏感的对象。在实现的时候要考虑多线程环境,就需要同步。在Singleton4实现中用双重检查加锁,减少同步粒度,从而只会在第一次(不超过两次)请求该实例的时候才会进行同步,在这里,之所以要Double Check的原因是:假设线程P1,P2都执行到了pointA处,此时P1获得对象锁,进入了同步块,然后发现此时unique...
分类:其他好文   时间:2015-03-17 21:55:20    阅读次数:125
oc关于非原子属性
OC在定义属性时有nonatomic和atomic两种选择atomic:原子属性,为setter方法加锁(默认就是atomic)nonatomic:非原子属性,不会为setter方法加锁atomic加锁原理1 @property (assign, atomic) int age;2 3 - (voi...
分类:其他好文   时间:2015-03-15 18:18:26    阅读次数:123
将线程锁加在对象上与锁加在方法上的区别(模拟火车票联网售票系统:多个线程同时出票,保证每张出票的编号连续且不重复。)
第一种,从结果看来,编号并非随着线程的逐一增加而增加,也意味着不同的人,有的人先抢票,可是线程没有及时运行,抢到票或者买到剩票。 原因: 虽然方法是加锁了,但是不同的线程运行不确定的,而实际上对这个 票号的生成 并没有加锁限制,导致先买者,抢不到票。----- 票号不重复,但是没有优先概念,不...
分类:编程语言   时间:2015-03-15 16:43:53    阅读次数:258
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!