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

詳解C# parallel中并行計算的四種寫法總結(jié)

 更新時間:2022年11月28日 08:28:15   作者:dawn  
在C#中,parallel關(guān)鍵字可以用于并行計算。本文為大家總結(jié)了四種C# parallel并行計算的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

在C#中,parallel關(guān)鍵字用于并行計算。

在數(shù)據(jù)集的處理當(dāng)中,我們需要針對每一行來進(jìn)行處理,行之間沒有關(guān)聯(lián),這個時候就可以應(yīng)用并行處理來增加程序的靈活性。

在字典、列表或者數(shù)據(jù)集合當(dāng)中也常見到這樣的應(yīng)用。

下面列舉的是parallel應(yīng)用的四種寫法。

效果圖

一般的循環(huán),結(jié)果就是同步循環(huán):

            for (int i=0;i<12;i++)
            {
                textBox1.Text = textBox1.Text + $"循環(huán)數(shù):{i}" + Environment.NewLine;
            }

并行寫法1

            Parallel.For(0, 12, i =>
            {
                textBox2.BeginInvoke(() =>
                {
                    textBox2.Text = textBox2.Text + $"循環(huán)數(shù):{i}" + Environment.NewLine;
                });
            });

并行寫法2

            int[] x = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
            Parallel.ForEach(x, i =>
            {
                textBox3.BeginInvoke(() =>
                {
                    textBox3.Text = textBox3.Text + $"循環(huán)數(shù):{i}" + Environment.NewLine;
                });
            });

并行寫法3

            Parallel.Invoke(
            new Action(() =>
            {
                for (int i = 0; i < 4; i++)
                {
                    textBox4.BeginInvoke(() =>
                    {
                        textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},1-4" + Environment.NewLine;
                    });
                }
            }),
            new Action(() =>
            {
                for (int i = 4; i < 8; i++)
                {
                    textBox4.BeginInvoke(() =>
                    {
                        textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},4-8" + Environment.NewLine;
                    });
                }
 
            }),
            new Action(() =>
            {
                for (int i = 8; i < 12; i++)
                {
                    textBox4.BeginInvoke(() =>
                    {
                        textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},8-11" + Environment.NewLine;
                    });
                }
            }));

上面的寫法不明了,可以單獨(dú)寫成函數(shù)定義樣式:

        private void func1()
        {
            for (int i = 0; i < 4; i++)
            {
                textBox4.BeginInvoke(() =>
                {
                    textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},0-3" + Environment.NewLine;
                });
            }
        }
 
        private void func2()
        {
            for (int i = 4; i < 8; i++)
            {
                textBox4.BeginInvoke(() =>
                {
                    textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},4-7" + Environment.NewLine;
                });
            }
        }
 
        private void func3()
        {
            for (int i = 8; i < 12; i++)
            {
                textBox4.BeginInvoke(() =>
                {
                    textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{i},8-11" + Environment.NewLine;
                });
            }
        }

然后調(diào)用,這樣看就清晰多了:

Parallel.Invoke(func1, func2, func3);

并行寫法4

            int[] x = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
            await Parallel.ForEachAsync(x,new ParallelOptions() { MaxDegreeOfParallelism=3},async (x,_) =>
            {
                textBox4.BeginInvoke(async () =>
                {
                   textBox4.Text = textBox4.Text + $"循環(huán)數(shù):{x}" + Environment.NewLine;
                });
            }
            );

實(shí)際編寫過程中,可以根據(jù)自己的喜好來使用這些語法糖。

到此這篇關(guān)于詳解C# parallel中并行計算的四種寫法總結(jié)的文章就介紹到這了,更多相關(guān)C# parallel并行計算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中實(shí)體類與XML相互轉(zhuǎn)換方式

    C#中實(shí)體類與XML相互轉(zhuǎn)換方式

    這篇文章主要介紹了C#中實(shí)體類與XML相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • c#中LINQ的基本用法(二)

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

    這篇文章介紹了c#中LINQ的基本用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下的相關(guān)資料
    2022-04-04
  • C# Lambda表達(dá)式及Lambda表達(dá)式樹的創(chuàng)建過程

    C# Lambda表達(dá)式及Lambda表達(dá)式樹的創(chuàng)建過程

    這篇文章主要介紹了C# Lambda表達(dá)式及Lambda表達(dá)式樹的創(chuàng)建過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • C#使用CancellationTokenSource 取消 Task的方法

    C#使用CancellationTokenSource 取消 Task的方法

    因?yàn)樯婕暗搅巳粘=?jīng)常會碰到的取消任務(wù)操作,本文主要介紹了C#使用CancellationTokenSource 取消 Task,文中通過代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2022-02-02
  • 詳解C#設(shè)計模式編程中生成器模式的使用

    詳解C#設(shè)計模式編程中生成器模式的使用

    這篇文章主要介紹了詳解C#設(shè)計模式編程中生成器模式的使用,生成器模式主張創(chuàng)建對象的過程和對象的表現(xiàn)應(yīng)該分離開來,需要的朋友可以參考下
    2016-02-02
  • C#自定義控件指示燈效果

    C#自定義控件指示燈效果

    在C#中實(shí)現(xiàn)一個指示燈控件,可以通過GDI+技術(shù)繪制,首先使用Pen對象繪制外環(huán),然后用SolidBrush對象填充內(nèi)圓,通過RectangleF定義繪制和填充的邊界,控件的屬性包括顏色、間隙、外環(huán)寬度等,本文給大家介紹C#自定義控件指示燈效果,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • C#編程實(shí)現(xiàn)查看剪切板內(nèi)容的方法

    C#編程實(shí)現(xiàn)查看剪切板內(nèi)容的方法

    這篇文章主要介紹了C#編程實(shí)現(xiàn)查看剪切板內(nèi)容的方法,涉及C#針對剪切板操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#實(shí)現(xiàn)類似新浪微博長URL轉(zhuǎn)短地址的方法

    C#實(shí)現(xiàn)類似新浪微博長URL轉(zhuǎn)短地址的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)類似新浪微博長URL轉(zhuǎn)短地址的方法,涉及C#操作正則表達(dá)式的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • unity實(shí)現(xiàn)翻頁效果

    unity實(shí)現(xiàn)翻頁效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)翻頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 探討C#中Dispose方法與Close方法的區(qū)別詳解

    探討C#中Dispose方法與Close方法的區(qū)別詳解

    本篇文章是對C#中Dispose方法與Close方法的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評論

上饶市| 东光县| 晋江市| 运城市| 桐梓县| 邢台县| 广饶县| 铜梁县| 拉萨市| 西和县| 呼图壁县| 全椒县| 武义县| 弋阳县| 宜黄县| 社旗县| 张家界市| 钟山县| 博罗县| 邹平县| 青岛市| 界首市| 藁城市| 呼和浩特市| 夏邑县| 古田县| 陵川县| 白银市| 建水县| 秦安县| 上林县| 夏津县| 崇仁县| 西藏| 四川省| 新建县| 舟曲县| 桃源县| 芮城县| 全州县| 兴安盟|