对于按名称锁定是使用命名互斥锁的任何替代方法吗?
锁定用于 Web 应用程序,以防止对具有相同名称的资源并行执行多次操作,因此我需要按名称锁定。IE。可以同时对不同名称的资源执行该操作。资源名称是 url 中的字符串。可以说资源只是一个实体。
命名互斥锁是最好的选择吗?不会太重?
对于按名称锁定是使用命名互斥锁的任何替代方法吗?
锁定用于 Web 应用程序,以防止对具有相同名称的资源并行执行多次操作,因此我需要按名称锁定。IE。可以同时对不同名称的资源执行该操作。资源名称是 url 中的字符串。可以说资源只是一个实体。
命名互斥锁是最好的选择吗?不会太重?
如果重量是指性能影响,那么与一般处理 Web 请求的成本相比,使用命名互斥体应该可以忽略不计。
我认为命名互斥锁是一个不错的选择,因为那时您独立于托管服务的方式(无论是单进程还是多进程取决于服务器,而不是您的服务),特别是如果您的服务是可能使用的库许多网络应用程序。除了被限制在一个进程之外,alock
还需要一个共享对象引用来进行锁定,因此您需要一个对所有线程/请求都可见的引用,互斥锁的名称(预先知道)优雅地解决了这个问题。
话虽如此,在保护资源时,最好保护资源本身而不是该资源的入口点。例如,如果您的服务保护对数据库某些部分的并发访问,那么最好使用具有适当隔离模式的 DB 事务,或者如果您要保护文件系统中的某些内容,则获得对文件的独占访问权限等.