V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
guoxx_
V2EX  ›  问与答

多进程之间锁的问题

  •  
  •   guoxx_ · 2011-12-04 14:21:49 +08:00 · 4288 次点击
    这是一个创建于 4722 天前的主题,其中的信息可能已经有所发展或是发生改变。
    关于多进程锁有什么比较成熟的方案没有?
    被多进程访问数据库操作搞得头疼,相关经验也不足,求助..
    6 条回复    1970-01-01 08:00:00 +08:00
    yelusiku
        1
    yelusiku  
       2011-12-04 14:28:16 +08:00
    文件锁
    lijia18
        2
    lijia18  
       2011-12-04 15:45:11 +08:00
    查询外的操作数据库会自动锁吧
    Ricepig
        3
    Ricepig  
       2011-12-04 16:12:03 +08:00
    数据库自己有行锁表锁,依靠数据库或者自己还可以乐观锁悲观锁。多进程自己还可以通过操作系统提供的互斥锁,临界区。或者极端一点通过CAS原语。
    guoxx_
        4
    guoxx_  
    OP
       2011-12-04 20:05:24 +08:00
    逻辑是这样得
    1 进程A读取数据库数据X
    2 进程B读取数据库数据X
    3 进程A更新数据为X+1
    4 进程B更新数据为X+2
    希望得结果肯定是X += 3

    希望能够得到一些指导性的意见
    madeye
        5
    madeye  
       2011-12-04 20:44:26 +08:00
    @guoxx_ 只要保证对 X 的一对读写是原子操作就行了,比如:[1 3] [2 4] 。
    从 Atomicity Violation 的定义来看就是不能出现:RWR, RWW, WRW(R) 这几种情况。
    Ricepig
        6
    Ricepig  
       2011-12-04 20:47:21 +08:00
    @guoxx_ 搜索“乐观锁“,”悲观锁“
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1733 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:41 · PVG 00:41 · LAX 08:41 · JFK 11:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.