日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考...

發布時間:2023/12/20 C# 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

往往我們在開發程序、調試程序時,無法模擬多用戶同時操作的實際環境下的運行情況。

為了模擬多用戶并發操作,我們先寫個多線程的例子來充分模擬多用戶并發的情況

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> class SequenceTest {/// <summary>/// 定義委托/// </summary>/// <param name="user">用戶</param>delegate void MakeSequenceDelegate(string user);/// <summary>/// 這里是測試序列/// </summary>/// <param name="user">用戶</param>private void MakeSequence(string user){for (int i = 0; i < 10; i++){BaseSequenceManager sequenceManager = new BaseSequenceManager();// 模擬2010年7月份的訂單編號產生System.Console.WriteLine(user + "" + sequenceManager.GetSequence("Order201007"));}}/// <summary>/// 這里是模擬多用戶同時點擊/// </summary>public void DoTest(){// 模擬3個用戶的并發操作MakeSequenceDelegate sequenceDelegate1 = new MakeSequenceDelegate(MakeSequence);sequenceDelegate1.BeginInvoke("user1", null, null);MakeSequenceDelegate sequenceDelegate2 = new MakeSequenceDelegate(MakeSequence);sequenceDelegate2.BeginInvoke("user2", null, null);MakeSequenceDelegate sequenceDelegate3 = new MakeSequenceDelegate(MakeSequence);sequenceDelegate3.BeginInvoke("user3", null, null);}}

?

序列表的設計效果如下圖,表中存儲了當前是什么序列的序號為多少等信息。

?

由于沒進行并發控制,程序的輸出情況如下,當然在單用戶操作測試時,是不太可能測試出并發情況下的運行狀態的。

這里會有重復序列急丟失序列的情況會發生,并不能保證多用戶并發時,能完全產生唯一的訂單編號。

為什么會發生并發問題? 因為你在讀的時候,我也在讀,你在更新序列時,我也在更新序列,因為相同的程序在運行多份,用戶1,2同時都讀到了0007這個序號。

?

進行并發控制后的運行效果如下:

這里序號是連續的,而且是沒有丟失情況,也沒重復情況發生。

?

這里是如何避免并發?BaseSequenceManager中進行了如下排斥并發的加工。

????????????

???????????

????????????private static readonly object SequenceLock = new object();

?

    string returnValue = string.Empty;

??????????? // 這里用鎖的機制,提高并發控制能力
??????????? lock (SequenceLock)
??????????? {

????????????????????returnValue =?讀取數據庫中的當前序列值(一)

??????????????????? 更新數據庫中的序列(二)

????????????}

??????????? return? returnValue;

???

因為數據庫的讀取,更新,需要2步操作,是導致了并發問題的所在。

?

以上文章主要涉及到如下技術問題:

1:需要能寫出多線程的模擬程序。

2:多線程函數如何傳遞參數需要學會。

3:這也算是所謂的核心基礎組件的自動化測試吧。

4: lock 語句(C# 參考)?http://msdn.microsoft.com/zh-cn/library/c5kehkcz(VS.80).aspx

?

測試起來好用的管理軟件,真正投放到實際生產環境中往往會發生很多意想不到的錯誤,這往往是沒能重復測試多用戶并發情況下的運行情況導致的占一部分。

以上程序雖然沒什么大難度,下午耗費了接近2-3個小時,才調整好,希望對讀者評估工作量能有個參考。

?

估計在國內的管理類軟件,90%以上都沒進行嚴格的多用戶并發測試,90%以上的都沒考慮應用程序并發問題及數據庫的并發問題,若不是迫不得已越簡單越省事就好,何必跟自己過不去呢,搞那么多繁瑣的并發處理。

轉載于:https://www.cnblogs.com/BrokenIce/p/6272664.html

總結

以上是生活随笔為你收集整理的C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天艹天天爽 | 看日本黄色录像 | 久久人妻少妇嫩草av蜜桃 | 欧美日本在线看 | 这里只有精品国产 | 日韩国产一区二区三区 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 末路1997全集免费观看完整版 | 91人人视频 | 久久久久亚洲AV成人无在 | 国产黄色美女视频 | 久久免费在线 | 钰慧的mv视频在线观看 | 黄色av软件| 熟妇高潮一区二区高潮 | 想要视频在线 | 超碰免费看 | 婷婷超碰| 天天插插| 国产成人日韩 | 亚洲国产精品尤物yw在线观看 | 婷婷激情六月 | 欧美黄色一级片视频 | 日韩精品电影一区二区 | 日本免费在线观看 | 精品国产精品国产偷麻豆 | 亚洲精品视频在线观看免费视频 | 欧美啪啪一区 | 日韩精品二区在线观看 | 51成人做爰www免费看网站 | 情趣五月天| 欧美亚洲日本一区 | 精品人妻久久久久一区二区三区 | 精品人伦一区二区三区蜜桃免费 | 精品国产精品网麻豆系列 | 精品久久在线 | 欧美日韩人妻精品一区在线 | 黄色国产在线 | 在线黄色网 | 打屁股疼的撕心裂肺的视频 | 夜夜骚视频 | 在线免费一区二区 | 久久99国产综合精品免费 | 国产日本亚洲 | 日本在线高清视频 | 69xxxx国产| 日韩a在线 | 69国产精品 | 深夜成人福利视频 | 在线亚洲+欧美+日本专区 | 成年人免费在线观看视频网站 | 久久h| 爆乳2把你榨干哦ova在线观看 | 欧美第一页 | av一卡二卡 | 97国产精品视频人人做人人爱 | 一级片一区 | 非洲黑人毛片 | 97色资源| 中文字幕人妻互换av久久 | 丰满人妻熟妇乱偷人无码 | 国产xxxxxxxxx| 青青草好吊色 | 国产欧美日韩综合精品一区二区三区 | 国产又大又黄视频 | 性少妇mdms丰满hdfilm | 91极品国产 | 国产一区二区波多野结衣 | 国产精品天天操 | 伊人二区 | 国内视频精品 | 亚洲伦理一区二区 | 在线观看国产一区二区 | 欧美二区在线 | 激情婷婷六月 | 蜜桃久久精品 | 午夜一级免费 | 天天射一射 | 夜夜操综合 | 国产精品国产三级国产aⅴ下载 | 久久久久国产精品区片区无码 | 免费看片成人 | 亚欧精品在线 | 秋霞一级全黄大片 | 欧美午夜性春猛交 | 欧美激情在线播放 | 国产精品成人一区二区三区 | 久久久久久九九九 | 精品视频在线免费观看 | 国产女女 | 天堂资源最新在线 | 亚洲欧美成人一区二区三区 | 国精品无码人妻一区二区三区 | 亚洲免费中文字幕 | 久久一级大片 | 亚洲高清视频免费观看 | 悟空影视大全免费高清观看在线 | 97国产在线播放 | 国产激情在线视频 |