最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在c#里面其實(shí)很簡(jiǎn)單,下面先來(lái)看一個(gè)簡(jiǎn)單的小例子

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

如果這個(gè)時(shí)候我們開(kāi)啟多個(gè)線程

代碼如下

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

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

第一種寫法使用this

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

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

我們?cè)賮?lái)看第二種

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;
           }
       }

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

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

相關(guān)文章

最新評(píng)論

安福县| 隆德县| 阜宁县| 师宗县| 舟曲县| 湘乡市| 论坛| 昭通市| 五莲县| 万全县| 邵阳市| 巴青县| 讷河市| 永丰县| 四川省| 双城市| 石棉县| 安塞县| 涞水县| 泸溪县| 湟中县| 正定县| 远安县| 德安县| 湖南省| 澄迈县| 湖南省| 大渡口区| 永济市| 蒙阴县| 赤城县| 绥德县| 梓潼县| 常德市| 龙江县| 南投县| 和硕县| 天峨县| 石楼县| 施秉县| 闸北区|