减小锁定的粒度:C#实现基于关键字(key)的锁定
摘要:
问题描述最近需要实现一个API,方法签名(的抽象版本)类似于void Update(string id)API将在多线程环境下被调用,需满足:如果多个调用线程传入相同的id,则它们必须被串行化——一个线程工作,其他线程阻塞,前一个线程调用完毕后,后一个线程才开始工作,依此类推。若传入的id不同,则各线程可并行执行。场景与数据库的行锁定非常相似——锁定对于更新相同的行的多个请求是互斥的,而更新不同的行则可同时进行。不过这回我们没有数据库的帮忙,同时,程序非常的小(其实是客户端程序),所以我们希望解决方案也非常小巧。基本思路说道多线程串行化,立刻想到的就是锁,但是如果简单的 lock (someG 阅读全文
posted @ 2012-11-17 20:10 codeyeast 阅读(2721) 评论(9) 推荐(3) 编辑