.NET并行(多核)编程系列之七 共享数据问题和解决概述

前言:之前的文章介绍了了并行编程的一些基础的知识,从本篇开始,将会讲述并行编程中实际遇到一些问题,接下来的几篇将会讲述数据共享问题。

本篇的议题如下:

数据竞争

解决方案提出

顺序的执行解决方案

数据不变解决方案

在开始之前,首先,我们来看一个很有趣的例子:

class BankAccount{    public int Balance    {        get;        set;    }}class App{    static void Main(string[] args)    {        // create the bank account instance        BankAccount account = new BankAccount();        // create an array of tasks        Task[] tasks = new Task[10];        for (int i = 0; i < 10; i++)        {            // create a new task            tasks[i] = new Task(() =>            {                // enter a loop for 1000 balance updates                for (int j = 0; j < 1000; j++)                {                    // update the balance                    account.Balance = account.Balance + 1;                }            });            // start the new task            tasks[i].Start();        }        // wait for all of the tasks to complete        Task.WaitAll(tasks);        // write out the counter value        Console.WriteLine("Expected value {0}, Counter value: {1}",        10000, account.Balance);        // wait for input before exiting        Console.WriteLine("Press enter to finish");        Console.ReadLine();    }}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 解决方案
, 多核
, console
, account
Tasks
多核并行编程、多核并行编程实验报告、c 多核并行编程、python 多核并行计算、fluent多核并行计算,以便于您获取更多的相关知识。

时间: 2024-08-03 08:55:48

.NET并行(多核)编程系列之七 共享数据问题和解决概述的相关文章

一起谈.NET技术,.NET并行(多核)编程系列之七 共享数据问题和解决概述

之前的文章介绍了了并行编程的一些基础的知识,从本篇开始,将会讲述并行编程中实际遇到一些问题,接下来的几篇将会讲述数据共享问题. 本篇的议题如下: 1.数据竞争 2.解决方案提出 3.顺序的执行解决方案 4.数据不变解决方案 在开始之前,首先,我们来看一个很有趣的例子: class BankAccount { public int Balance { get; set; } } class App { static void Main(string[] args) { // create the

.NET 并行(多核)编程系列之五 Task执行和异常处理

原文:.NET 并行(多核)编程系列之五 Task执行和异常处理 .NET 并行(多核)编程系列之五 Task执行和异常处理 前言:本篇主要讲述等待task执行完成. 本篇的议题如下: 1. 等待Task执行完成 2. Task中的异常处理   系列文章链接: .NET 4 并行(多核)编程系列之一入门介绍 .NET 4 并行(多核)编程系列之二 从Task开始  .NET 4 并行(多核)编程系列之三 从Task的取消  .NET 4 并行(多核)编程系列之四 Task的休眠  .NET 并行

.NET并行(多核)编程系列之五 Task执行和异常处理

前言:本篇主要讲述等待task执行完成. 本篇的议题如下: 1. 等待Task执行完成 2. Task中的异常处理 首先注意一点:这里提到的"等待"和之前文章提到的"休眠"意思是不一样的: 等待:在等待一个task的时候,这个task还是在运行之中的,"等待"相当于在监听运行的task的执行情况. 休眠:让tasku不运行. 在上篇文章中介绍了如果从Task中获取执行后的结果:在Task执行完成之后调用Task.Result获取.其实也可以用其他

.NET并行(多核)编程系列之六 Task基础部分完结篇

前言:之前的文章介绍了了并行编程的一些基本的,也注重的讲述了Task的一些使用方法,本篇很短,将会结束Task的基础知识的介绍. 本篇的主要议题如下: 1. 获取Task的状态 2. 执行晚加载的Task(Lazily Task) 3. 常见问题的解决方案 1.获取Task的状态 在.NET并行编程还有一个已经标准化的操作就是可以获取task的状态,通过Task.Status属性来得到的,这个属性返回一个System.Threading.Tasks.TaskStatus的枚举值. 如下: Cre

.NET 4 并行(多核)编程系列之四 Task的休眠

原文:.NET 4 并行(多核)编程系列之四 Task的休眠 .NET 4 并行(多核)编程系列之四 Task的休眠 前言:之前的几篇文章断断续续的介绍了Task的一些功能:创建,取消.本篇介绍Task的休眠,本篇的内容比较的少. 本篇的议题如下: 1.       Task的休眠.   系列文章链接: .NET 4 并行(多核)编程系列之一入门介绍 .NET 4 并行(多核)编程系列之二 从Task开始  .NET 4 并行(多核)编程系列之三 从Task的取消  .NET 4 并行(多核)编

.NET 4 并行(多核)编程系列之二 从Task开始

原文:.NET 4 并行(多核)编程系列之二 从Task开始 .NET 4 并行(多核)编程系列之二 从Task开始          前言:我们一步步的从简单的开始讲述,还是沿用我一直的方式:慢慢演化,步步为营.     本篇文章的议题如下:    1.Task基础介绍    2.Task的创建     3.获取Task的执行结果 4. 补充细节   系列文章链接: .NET 4 并行(多核)编程系列之一入门介绍 .NET 4 并行(多核)编程系列之二 从Task开始  .NET 4 并行(多

.NET 4 并行(多核)编程系列之一入门介绍

本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下: 1. 并行编程和多线程编程的区别. 2. 并行编程技术的利弊 3. 何时采用并行编程 1.并行编程和多线程编程的区别. 1.1并行编程. 现在随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流.为此,在.NET 4 中就引入了"并行编程".在.NET 4 中一些列的Library和类为并行编程提供了支持,如: Task Parallel Librar

一起谈.NET技术,.NET 4 并行(多核)编程系列之一入门介绍

本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下: 1. 并行编程和多线程编程的区别. 2. 并行编程技术的利弊 3. 何时采用并行编程 1.并行编程和多线程编程的区别. 1.1并行编程. 现在随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流.为此,在.NET 4 中就引入了"并行编程".在.NET 4 中一些列的Library和类为并行编程提供了支持,如: Task Parallel Librar

.NET“.NET研究” 4 并行(多核)编程系列之一入门介绍

本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下: 1. 并行编程和多线程编程的区别. 2. 并行编程技术的利弊 3. 何时采用并行编程 1.并行编程和多线程编程的区别. 1.1并行编程. 现在随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流.为此,在.NET 4 中就引入了"并行编程".在.NET 4 中一些列的Library和类为并行编程提供了支持,如: Task Parallel Librar