项目中碰到了静态页文件读写冲突的问题(如果同时存在读写就报黄页,虽然写入是“瞬间”的,但高并发下依然有可能)。
public class ReaderWriterLockHelper
{
static ReaderWriterLock rwl = new ReaderWriterLock();
public static void ReadFromResource(int timeOut, Action readAction)
{
try
{
rwl.AcquireReaderLock(timeOut);
try
{
readAction();
}
finally
{
rwl.ReleaseReaderLock();
}
}
catch (ApplicationException)
{
}
}
public static void WriteToResource(int timeOut, Action writeAction)
{
try
{
rwl.AcquireWriterLock(timeOut);
try
{
writeAction();
}
finally
{
rwl.ReleaseWriterLock();
}
}
catch (ApplicationException)
{
}
}
}
写入:
var thread = new Thread(context =>
{
HttpContext.Current = (HttpContext)context;
var content = TemplateFactory.ReplaceContent(template);
ReaderWriterLockHelper.WriteToResource(10, () =>
{
using (var sw = fileInfo.CreateText())
{
sw.WriteLine(content);
sw.Close();
}
});
});
thread.Start(HttpContext.Current);
读取:
ReaderWriterLockHelper.ReadFromResource(10, () => context.Response.WriteFile(url));
分享到:
相关推荐
手写共享线程,读写线程, 类似于net =》ReaderWriterLock类,当然这个代码有助于你理解 net 的 ReaderWriterLock类
本文实例讲述了C#解决SQlite并发异常问题的方法。分享给大家供大家参考,...作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标。 using System; using System.Collections.Generic; using System.Text;
类:ReaderWriterLock 接口:LockHandle 界面:UpgradeableLockHandle 类别:递延 排程 类:AsyncQueue 类:AsyncBoundedQueue 类:AsyncStack 功能:延迟(毫秒,值?) 样本 消除 API
c# 多线程开发 之 ReaderWriterLock 依然不是很理解线程开发。希望网友们多多指教!
主要介绍了C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法,涉及C#多线程操作读写锁定的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
安装安装python包readerwriterlock python3 -m pip install -U readerwriterlock 用法根据访问优先级需求和功能需求选择一个rwlock类,这些需求将由线程使用: 优先事项+速度+可降级* 读者优先级(又名第一读者-作家...
线程安全的一个很经常的需求是允许并发读,但是不允许并发写,例如对于文件就是这样的。 ReaderWriterLockSlim 在.net framework 3.5的时候就提供了,它是用来代替以前的”fat”版本的”ReaderWriterLock” 这两个类...
Python3 线程中常用的两个模块为: _thread threading(推荐使用) 使用Thread类创建 import threading from time import sleep,ctime def sing(): for i in range(3): print(正在唱歌...%d%i) ...
单元模式和Windows Forms BackgroundWorker类 ReaderWriterLock类 线程池 异步委托 计时器 局部储存
在程序中使用了lock或者ReaderWriterLock,锁资源发生了争用 下面是一小段代码: 代码如下: //_rwLock的类型是ReaderWriterLock _rwLock.AcquireWriterLock(100); DoSomething(); _rwLock.ReleaseWriterLock(); 这...
常用的线程锁分为一下七种:volatile关键字、Lock锁、System.Threading.Interlocked原子级别操作、Monitor、Metux、ReaderWriterLock、EventWaitHandle同步事件。此次代码中包含了以上除了volatile的测试代码
单个写入程序/多个阅读程序在.Net 类库中其实已经提供了实现,即 System.Threading.ReaderWriterLock 类。本文通过对常见的单个写入/多个阅读程序的分析来探索c# 的多线程编程。
个人工作和学习中积累和总结的多线程笔记 包含异步 线程等待 线程异常 线程终止 线程安全 lock monitor mutex autoresetevent semephore readerwriterlock readerwriterlockslim
无法死锁的ReaderWriterLock和线程安全的示例集合
单个写入程序/多个阅读程序在.Net类库中其实已经提供了实现,即System.Threading.ReaderWriterLock类。本文通过对常见的单个写入/多个阅读程序的分析来探索c#的多线程编程。
C#多线程教材 入门 概述与概念 创建和开始使用多线程 线程同步基础 同步要领 ...ReaderWriterLock类 线程池 异步委托 计时器 局部储存 高级话题 非阻止同步 Wait和Pulse Suspend和Resume 终止线程 概
全新的一章,讨论了不同的混合构造,如ManualResetEventSlim、SemaphoreSlim、CountdownEvent、Barrier、ReaderWriterLock(Slim)、OneManyResourceLock、Monitor,3种用于处理double-check锁的方式,.NET 4.0中...
代码如下:/// 共享锁</summary> public class ShareLock { ReaderWriterLock Lock; IDisposable readLock, writeLock; public IDisposable ReadLock { get { Lock.AcquireReaderLock(-1); return readLock; } } ...