在情景一、情景二中,我分别介绍了当多线程遇到 “资源争用”、“限量使用” 情形时的解决方案,本篇是本系列的最后一种情形,会介绍几种用于解决线程通信的方案。 情景三:我让你动,你才能动! 大锤:“老板,拿这个手机让我看看”。 大锤:“这是手机吗??? 分别就只是一个壳子”。 老板:“呀,这可...
分类:
编程语言 时间:
2014-10-26 15:29:51
阅读次数:
297
情景一中,我主要介绍了用于解决资源争用时各种方式的区别,本篇文章我们将进一步介绍线程同步的第二种场景。 情景二:数量有限,先到先得 情景简介:与情景一类似,但是这次茅坑的数量不只一个。如果有需求的人数少于茅坑数量,那一切都很和谐。但是人数超过茅坑数量的时候该怎么办?多个人占用一个坑? 解决办...
分类:
编程语言 时间:
2014-10-25 20:06:13
阅读次数:
296
分布式缓存,能解决单台服务器内存不能无限扩张的瓶颈。在分布式缓存的应用中,会遇到多个客户端同时争用的问题。这个时候,需要用到分布式锁,得到锁的客户端才有操作权限。Memcached 和 Redis 是常用的分布式缓存构建方案,下面列举下基于Memcached 和 Redis 分布式锁的实现方法。Me...
分类:
系统相关 时间:
2014-10-24 14:29:38
阅读次数:
213
在聊聊高并发(六)实现几种自旋锁(一) 这篇中实现了两种基本的自旋锁:TASLock和TTASLock,它们的问题是会进行频繁的CAS操作,引发大量的缓存一致性流量,导致锁的性能不好。
对TTASLock的一种改进是BackoffLock,它会在锁高争用的情况下对线程进行回退,减少竞争,减少缓存一致性流量。但是BackoffLock有三个主要的问题:
1. 还是有大量的缓存一致性流量,...
分类:
其他好文 时间:
2014-10-23 12:40:05
阅读次数:
217
2014-09-25 BaoXinjian一、Insert 性能影响应用设计不合理导致的session之间的互锁(enqueue)是影响程序可扩展性最常见的原因。此外,一些共享资源的争用,也会导致性能下降。本篇介绍两个由并发insert操作导致的等待事件(wait event),以及如何通过优化物理...
分类:
数据库 时间:
2014-09-28 19:24:24
阅读次数:
525
1:查看当前的事务mysql> SELECT * FROM information_schema.innodb_trx \G2:查看当前锁定的事务mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;3:查看当前等锁的事务mysql> SELECT...
分类:
数据库 时间:
2014-09-18 21:56:44
阅读次数:
260
1. 并发技术由于需要页高速缓存是全局的,各进程不停的访问,必须要考虑其并发性能,单纯的对一棵树使用锁导致的大量争用是不能满足速度需要的,Linux中是在遍历树的时候采用一种RCU技术,来实现同步并发。RCU(Read-Copy Update),是一种保证读该radix tree的时候,可以不要管i...
分类:
系统相关 时间:
2014-09-12 23:22:34
阅读次数:
420
main()本身就是一线程,现在在main内部再创建另一个线程,例子只是简单的在两个线程中打印了一下TID和PID以及获取本身PID,当然两个线程的TID是一样的,PID是不一样的。这里主要说的是:两个线程一起运行,屏幕上显示的各线程的内容,因为一起争用资源,造成了打印信息内容的重叠。代码:#inc...
分类:
编程语言 时间:
2014-09-05 12:44:11
阅读次数:
264
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访 问性能的一个重要因素。从这个角度来说,锁对数据...
分类:
数据库 时间:
2014-08-28 12:54:19
阅读次数:
243
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据...
分类:
数据库 时间:
2014-08-04 17:00:47
阅读次数:
498