前言:之前的文章介绍了了并行编程的一些基础的知识,从本篇开始,将会讲述并行编程中实际遇到一些问题,接下来的几篇将会讲述数据共享问题。
本篇的议题如下:
数据竞争
解决方案提出
顺序的执行解决方案
数据不变解决方案
在开始之前,首先,我们来看一个很有趣的例子:
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