2013-05-09 110 views
1

对于使用名称锁定进行锁定是使用命名互斥锁的替代方法吗?通过名称锁定(互斥选择)

锁定是为Web应用程序防止在同名资源上多次并行执行操作,所以我需要按名称锁定。 IE浏览器。可以同时在不同名称的资源上执行该操作。资源名称是一个以url形式出现的字符串。可以说,资源只是一个实体。

被命名为mutex这个最好的选择吗?不是太重?

+1

向我们展示一些代码。 – Nick 2013-05-09 07:41:59

+1

为什么你需要一个命名互斥锁来锁定一个字符串?说真的,只是坚持一个正常的互斥体,你会很好。被称为Mutex的是用于跨多个进程的系统范围锁定。 – 2013-05-09 07:43:13

+0

你要保护什么样的资源? – 2013-05-09 07:44:13

回答

1

如果您觉得沉重是指性能影响,那么与通常处理Web请求的成本相比,使用已命名的互斥量应该可以忽略不计。

我认为命名互斥是一个很好的选择,因为那样你独立于你的服务托管方式(无论是单个还是多个进程取决于服务器,而不取决于你的服务),特别是如果你的服务是一个可能被许多Web应用程序使用的库。除了被限制在一个进程之外,lock还需要一个用于锁定的共享对象引用,所以您需要一个对所有线程/请求都可见的引用,这是一个互斥的名称(事先已知)优雅地解决的问题。

话虽如此,当保护一个资源时,最好保护资源本身而不是资源的入口点。例如,如果您的服务保护对数据库某些部分的并发访问,那么最好使用具有适当隔离模式的数据库事务,或者如果您在文件系统中保护某些内容,则获得对文件的独占访问等