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

MethodlmplAttгibuteопределен в пространстве именSystem . Runtime . CompilerServices.Ниже приведен конструктор, применяемый для подобной синхронизации:

public MethodlmplAttribute(MethodlmplOptionsmethodlmplOptions)

гдеmethodlmplOptionsобозначает атрибут реализации. Для синхронизации метода достаточно указать атрибутMethodlmplOptions. Synchronized.Этот атрибут вызывает блокировку всего метода для текущего экземпляра объекта, доступного по ссылкеthis.Если же метод относится к типуstatic,то блокируется его тип. Поэтому данный атрибут непригоден для применения в открытых объектах или классах.

Ниже приведена еще одна версия программы, имитирующей тиканье часов, с переделанным вариантом классаTickTock,в котором атрибутMethodlmplOptionsобеспечивает должную синхронизацию.

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

using System;

using System.Threading;

using System.Runtime.CompilerServices;

// Вариант класса TickTock, переделанный с целью // использовать атрибут MethodlmplOptions.Synchronized, class TickTock {

/* Следующий атрибут полностью синхронизирует метод Tick. */ [MethodlmplAttribute(MethodlmplOptions.Synchronized)] public void Tick (bool running) { if(!running) { // остановить часы

Monitor.Pulse(this); // уведомить любые ожидающие потоки return;

}

Console.Write("тик ");

Monitor.Pulse(this); // разрешить выполнение метода Tock

Monitor.Wait(this);    //    ожидать завершения метода Tock

}

/* Следующий атрибут полностью синхронизирует метод Тоск. */ [MethodlmplAttribute(MethodlmplOptions.Synchronized)] public void Tock(bool running) { if (!running) { // остановить часы

Monitor.Pulse(this); // уведомить любые ожидающие потоки return;

}'

Console.WriteLine("так");

Monitor.Pulse(this); // разрешить выполнение метода Tick

Monitor.Wait(this);    //    ожидать завершения метода Tick

}

}

class MyThread {

public Thread Thrd;

TickTock ttOb;

// Сконструировать новый поток.

public MyThread(string name, TickTock tt) {

Thrd = new Thread(this.Run); ttOb = tt;

Thrd.Name = name;

Thrd.Start;

}

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

if(Thrd.Name == "Tick") {

for(int i=0; i<5; i++) ttOb.Tick(true); ttOb.Tick(false);

}

else {

for(int i=0; i<5; i++) ttOb.Tock(true); ttOb.Tock(false);

}

}

}

class TickingClock { static void Main {

TickTock tt = new TickTock;

MyThread mtl = new MyThread("Tick", tt) ;

MyThread mt2 = new MyThread("Tock", tt) ;

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

Console.WriteLine("Часы остановлены");

}

}

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

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

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