Читаем C# 4.0 полное руководство - 2011 полностью

В приведенной ниже программе синхронизация демонстрируется на примере управления доступом к методу Sumlt , суммирующему элементы целочисленного массива.

// Использовать блокировку для синхронизации доступа к объекту.

using System;

using System.Threading;

class SumArray { int sum;

object lockOn = new object; // закрытый объект, доступный

// для последующей блокировки

lock(lockOn) { // заблокировать весь метод

sum =0; // установить исходное значение суммы

for(int i=0; i < nums.Length; i++)    {

sum +- nums[i];

Console.WriteLine("Текущая сумма для потока " +

Thread.CurrentThread.Name + " равна " + sum); Thread.Sleep(10); // разрешить переключение задач

}

return sum;

}

}

}

class MyThread {

public Thread Thrd; int[] a; int answer;

// Создать один объект типа SumArray для всех // экземпляров класса MyThread. static SumArray sa = new SumArray;

// Сконструировать новый поток, public MyThread(string name, int [ ] nums) { a = nums;

Thrd = new Thread(this.Run);

Thrd.Name = name;

Thrd.Start; // начать поток

}

// Начать выполнение нового потока, void Run    {

Console.WriteLine(Thrd.Name + " начат.");

answer = sa.Sumlt(a);

Console.WriteLine("Сумма для потока " + Thrd.Name + " равна " + answer); Console.WriteLine(Thrd.Name + " завершен.");

}

}

class Sync {

static void Main {

int[] a = {1, 2, 3, 4, 5};

MyThread mtl = new MyThread ("Потомок #1", a);.

MyThread mt2 = new MyThread("Потомок #2", a);

mtl.Thrd.Join; mt2.Thrd.Join;

Ниже приведен результат выполнения данной программы, хотя у вас он может оказаться несколько иным.

Потомок #1 начат.

Сумма для потока Потомок #2 равна 15 Потомок #2 завершен.

Как следует из приведенного выше результата, в обоих потоках правильно подсчитывается сумма, равная 15.

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT