Redis是当前很流行的一种开源键值数据库。目前睿思的后台架构在数据库层采用了Redis和MySQL组合的形式,其中Redis主要用来存储状态信息(比如当前种子的peer)和读写频繁的数据。Redis完全运行在内存之上,无lock设计,速度非常快!通过实测,在睿思服务器上读写速度达到3万次/s。
在高并发的应用中,很多时候我们需要对某些资源进行竞争访问,比如在很多人下...
分类:
其他好文 时间:
2014-12-28 14:14:00
阅读次数:
122
比较简单,但很实用的小文章
通过互斥量实现进程的互斥
在visual studio下测试过,是成功的
code:
-------------------------------------------------------------------------------------------------------------------------------------------...
1、 基本原理
所谓“死锁”,在操作系统的定义是:在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
定义比较抽象,下图可以帮助你比较直观的理解死锁:
出现死锁需要满足几个必要条件: a)互斥:进程独占资源,资源不共享;
b)请求与保持:已经得到资源的进程可以再次申请新资源; c)不剥夺:已分配的资源不能被其它...
分类:
数据库 时间:
2014-12-26 21:41:27
阅读次数:
266
条件变量(Condition Variables)参考资料:http://game-lab.org/posts/posix-thread-cn/#5.1条件变量是什么?条件变量为我们提供了另一种线程间同步的方法,然而,互斥量是通过控制线程访问数据来实现同步,条件变量允许线程同步是基于实际数据的值。如...
分类:
编程语言 时间:
2014-12-26 14:32:41
阅读次数:
158
互斥量(Mutex)是“mutual exclusion”的缩写。互斥量是实现线程同步,和保护同时写共享数据的主要方法。 互斥量对共享数据的保护就像一把锁。在Pthreads中,任何时候仅有一个线程可以锁定互斥量,因此,当多个线程尝试去锁定该互斥量时仅有一个会成功。直到锁定互斥量的线程解锁互斥...
分类:
编程语言 时间:
2014-12-26 12:55:12
阅读次数:
204
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
在前面讲共享内存的IPC时曾说共享内存本身不具备同步机制,如果要实现同步需要使用信号量等手段来实现之,现在我们就来说说使用posix的信号量来实现posix多进程共享内存的同步。其实信号量也可以使用在同一进程的不同线程之间。
...
分类:
系统相关 时间:
2014-12-23 21:13:31
阅读次数:
199
[独占] 用户模式 Interlock原子锁,Spinlock自旋锁 内核模式 Mutex互斥锁(那个线程获取,那个线程释放;可以跨进程) 混合模式 Monter[信号量] 一批 内核模式 semaphore(可以跨进程) 混合模式 SemaphoreSlim...
分类:
编程语言 时间:
2014-12-23 18:57:50
阅读次数:
196
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
在第一节说到了生产者消费者问题,这一节我们来实现这样一个稍作修改的模型: 初始时缓冲区为空,生产者向缓冲区写入数据,消费者在缓冲区为空的情况下睡眠,当生产者写满缓冲区一半之后后通知消费者可以开始消费,生产者开始睡眠,直到消费者消...
分类:
编程语言 时间:
2014-12-23 17:32:51
阅读次数:
225
关键点——密封类MutexMSDN中Mutex类中是这样解释的:一个同步基元,也可用于进程间同步。其实个人感觉更容易理解的解释是:互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。互斥锁可适用于一个共享资源每次只能被一个线程访问的情况。如果要获取一个互斥锁。应...
分类:
其他好文 时间:
2014-12-22 19:29:54
阅读次数:
153
本文章介绍了线程的基本编程的 API 函数,互斥锁、条件变量等同步机制。...
分类:
编程语言 时间:
2014-12-22 09:29:37
阅读次数:
235