当前位置: 首页 > news >正文

最新企业网站开发和设计软件百度餐饮网站建设

最新企业网站开发和设计软件,百度餐饮网站建设,做网站界面一般用什么来做,世界杯比分我们知道通过lock一个固定静态object给代码段加同步锁,可以让多个线程的同时调用以同步执行,因此可以利用字典来给不同参数分配不同的静态对象,方法中不同的参数调用锁住各自不同的静态对象即可实现不同参数不加锁,相同参数才加锁…

我们知道通过lock一个固定静态object给代码段加同步锁,可以让多个线程的同时调用以同步执行,因此可以利用字典来给不同参数分配不同的静态对象,方法中不同的参数调用锁住各自不同的静态对象即可实现不同参数不加锁,相同参数才加锁的需求,而多线程更新操作的字典需要用到线程安全的ConcurrentDictionary防止争用,因此这里的静态加锁对象字典类型为ConcurrentDictionary<string, object>。

比如场景:在数据库某表没有唯一约束的情况下,有可能前端请求和程序定时服务同时执行写入操作,这时写入操作在不同的线程中执行,虽然写入之前作了判断记录是否已存在的操作,但可能两个线程同时执行都判断了记录不存在,因此都执行了写入操作,就造成了记录重复的可能。

写一个调用管理类“MultiInvokeManager”,通过该类来控制这种相同参数同时调用的可能性

/// <summary>
/// 多线程调用方法控制类
/// </summary>
public static class MultiInvokeManager
{//参数调用匹配加锁对象字典private static readonly ConcurrentDictionary<string, object> _lockMap = new ConcurrentDictionary<string, object>();           /// <summary>/// 根据调用参数(比如方法参数中唯一的订单号)对应的“key”,排除相同参数的“action”操作同时被执行/// </summary>/// <param name="key">相同参数匹配相同的key(比如唯一的订单号),以便相同参数不可同时调用</param>/// <param name="action">通过key是否相同决定是否需要限制同步执行的操作</param>public static void SyncInvokeForSameArgs(string key, Action action){object obj = _lockMap.GetOrAdd(key, new object());lock (obj){action();}}/// <summary>/// 控制的操作执行后,在适当的时机调用该方法释放字典中的对象,以便垃圾回收,防止累积占用内存/// </summary>/// <param name="key"></param>public static void ReleaseLockObject(string key){_lockMap.TryRemove(key, out _);}
}

1. 程序定时服务中调用:

MultiInvokeManager.SyncInvokeForSameArgs(tradeNo, () =>UpdateUserMemberStatus(userId, tradeNo, transactionId, payAmount).Wait()
);
MultiInvokeManager.ReleaseLockObject(tradeNo);

2. 前端请求方法中调用:

MultiInvokeManager.SyncInvokeForSameArgs(tradeNo, () =>UpdateMemberStatus(tradeNo, transactionId, payAmount).Wait()
);
MultiInvokeManager.ReleaseLockObject(tradeNo);

 以上两处调用中“UpdateUserMemberStatus”和“UpdateMemberStatus”方法,执行的都是判断“tradeNo”在原来某历史表中是否已经存在,不存在则Insert历史表并Update关联主表的相同操作,因此利用上面管理类“MultiInvokeManager”来控制防止相同参数的写入可能同时发生的可能(同时保持不同参数的写入依旧可以在不同线程中同时进行)

http://www.yayakq.cn/news/746146/

相关文章:

  • 什么样的网站流量容易做自己做视频直播网站
  • 西安高新网站制作百度一下首页百度
  • 怎么制作一个自己的网站网上花店网站建设
  • 局域网内建设网站个体工商户可以做网站吗
  • 衡阳退休职工做面膜网站大学生创新创业网站开发
  • 手机网站合同wordpress 本地搭建
  • 公共场所建设网站沈阳做平板网站
  • 网站开发用哪些技术房地产基础知识
  • 保健品 东莞网站建设适合毕设做的简单网站
  • 五站合一网站建设重庆网站建设接重庆零臻科技
  • 个人做排行网站深圳市创同盟科技有限公司
  • 企业手机网站建设策划网名logo设计制作
  • 网站诸多个人或主题网站建设 实验体会
  • 静态网站是什么原因c 做网站怎么截取前面的字符
  • 深圳网站建设 猴王网络长沙网站制作作
  • 南京做网站seo怎么制作游戏?
  • 门户网站建设与开发如何改wordpress主页
  • 行业自建网站苏州集团网站设计开发
  • 一流的免费网站建设卖手机网站开发的必要性
  • 深圳做分销网站公司易网
  • 网站后台图片网站建设顺序
  • 如何接单做网站哈尔滨做企业网站
  • 社交网站第一步怎么做iis8搭建网站
  • 怎么黑掉织梦做的网站使用本地主机做网站
  • 西部数码网站打不开各大网站收录入口
  • 丹徒建设网官方网站带数据库网站设计
  • 电商网站建设与课程设计计算机网站开发是那个语言
  • 辽宁建设网站首页百度导航下载2021最新版
  • 有关网站开发的论文网站模板psd
  • 网站开发专业成功人士医院网站那里填评价