欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#多線程之間的排他鎖的實現(xiàn)

 更新時間:2021年08月18日 11:40:32   作者:蘇飛論壇  
我們很多時候會碰到這樣的問題,使用多線程刷一個表的數(shù)據(jù)時需要多個線程不能重復(fù)提取數(shù)據(jù),那么這個時候就需要使用到線程的排他鎖了,本文就詳細(xì)的介紹一下

我們很多時候會碰到這樣的問題,使用多線程刷一個表的數(shù)據(jù)時需要多個線程不能重復(fù)提取數(shù)據(jù),那么這個時候就需要使用到線程的排他鎖了。

在c#里面其實很簡單,下面先來看一個簡單的小例子

Thread pingTask = new Thread(new ThreadStart(delegate
           {
               //從數(shù)據(jù)庫獲取1000條數(shù)
               var list = getdata();
           }));
 
           //啟動線程
           pingTask.Start();

如果這個時候我們開啟多個線程

代碼如下

for (int i = 0; i < 100; i++)
            {
                Thread pingTask = new Thread(new ThreadStart(delegate
               {
                //從數(shù)據(jù)庫獲取1000條數(shù)
                var list = getdata();
               }));
 
                //啟動線程
                pingTask.Start(); 
            }

那么這100個線程獲取的數(shù)據(jù)可能大部分是重復(fù)的
怎么樣解決這個問題呢,兩種寫法

第一種寫法使用this

private List<company> getdata()
        {
            lock (this)
            {
//提取數(shù)據(jù)
 
                return list;
            }
        }

這種寫法當(dāng)線程執(zhí)行到這一步時所有線程都會停止執(zhí)行,等待執(zhí)行完成

我們再來看第二種

object obj=new object()
       private List<company> getdata()
       {
           lock (obj)
           {
               List<ckb_com> list = ckbbll.FindList($" com_id >={index} and com_id<{index + pagesize}");
               index = index + pagesize;
 
               return list;
           }
       }

這種寫法只會鎖死這個方法,
同時只會有一個線程能執(zhí)行這個方法
大家可以根據(jù)自己的需求來使用

到此這篇關(guān)于c#多線程之間的排他鎖的實現(xiàn)的文章就介紹到這了,更多相關(guān)c#多線程排他鎖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析C#面向?qū)ο缶幊讨蟹椒ǎ╩ethod)的使用

    解析C#面向?qū)ο缶幊讨蟹椒ǎ╩ethod)的使用

    這篇文章主要介紹了解析C#面向?qū)ο缶幊讨蟹椒ǎ╩ethod)的使用,方法是面向?qū)ο缶幊陶Z言中的基本特性,需要的朋友可以參考下
    2016-01-01
  • c#中LINQ的基本用法(三)

    c#中LINQ的基本用法(三)

    這篇文章介紹了c#中LINQ的基本用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下的相關(guān)資料
    2022-04-04
  • 一文帶你了解C#操作MySql的方法

    一文帶你了解C#操作MySql的方法

    工作中大多數(shù)情況下用的都是 MySql 但一直沒有記錄,相關(guān)操作。這篇文章以便 MySql.Data 庫進(jìn)行MySql操作,使用 C# 執(zhí)行 SQL 語句,造個輪子
    2023-03-03
  • C#實現(xiàn)一個控制臺的點餐系統(tǒng)

    C#實現(xiàn)一個控制臺的點餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)一個控制臺的點餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C#編寫ActiveX網(wǎng)頁截圖控件

    C#編寫ActiveX網(wǎng)頁截圖控件

    這篇文章主要介紹了C#編寫ActiveX網(wǎng)頁截圖控件,作為學(xué)習(xí)C#編寫ActiveX的一個簡單入門教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • WinForm自定義控件應(yīng)用實例

    WinForm自定義控件應(yīng)用實例

    這篇文章主要介紹了WinForm自定義控件應(yīng)用實例,非常實用的功能,需要的朋友可以參考下
    2014-08-08
  • C#執(zhí)行表達(dá)式樹(Expression Tree)的具體使用

    C#執(zhí)行表達(dá)式樹(Expression Tree)的具體使用

    本文將深入探討表達(dá)式樹的基本概念、創(chuàng)建方法、修改和刪除節(jié)點、查詢和遍歷技巧以及在C#中的應(yīng)用示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C# MVC 微信支付教程系列之掃碼支付代碼實例

    C# MVC 微信支付教程系列之掃碼支付代碼實例

    本篇文章主要介紹了C# MVC 微信支付教程系列之掃碼支付,非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • Unity腳本自動添加頭部注釋的全過程

    Unity腳本自動添加頭部注釋的全過程

    在一些公司需要代碼嚴(yán)格的管理,有時候會需要用到每個腳本的頭部做一些介紹,所以下面這篇文章主要給大家介紹了關(guān)于Unity腳本自動添加頭部注釋的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • c#通過xpath讀取xml示例

    c#通過xpath讀取xml示例

    這篇文章主要介紹了c#通過xpath讀取xml示例,需要的朋友可以參考下
    2014-04-04

最新評論