Рефераты | Рефераты по информатике, программированию | Критические секции | страница реферата 25 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • К сожалению, пришлось даже переопределить CScopeLock lock(cs), причем жестко привязаться к имени переменной. Не стоит говорить о том, что наверняка получился конфликт имен - все-таки Lock довольно популярное название для метода. Такой код не будет собираться, например, с популярнейшей библиотекой ATL. Тут есть два способа. Переименовать методы Lock() и TryLock() во что-нибудь более уникальное, либо переименовать Lock() в ATL:

    // StdAfx.h

    //. ..

    #define Lock ATLLock

    #include <AtlBase.h>

    //. ..

    Сменим тему

    А что это мы все про Win32 API да про C++? Давайте посмотрим, как обстоят дела с критическими секциями в более современных языках программирования.

    C#

    Тут стараниями Майкрософт имеется полный набор старого доброго API под новыми именами.

    Критические секции представлены классом System.Threading.Monitor, вместо ::EnterCriticalSection() есть Monitor.Enter(object), а вместо ::LeaveCriticalSection() Monitor.Exit(object), где object – это любой объект C#. Т.е. каждый объект где-то в потрохах CLR (Common Language Runtime) имеет свою собственную критическую секцию либо заводит ее по необходимости. Типичное использование этой секции выглядит так:

    Monitor.Enter(this);

    m_dwSmth = dwSmth;

    Monitor.Exit(this);

    Если нужно организовать отдельную критическую секцию для какой-либо переменной, самым логичным способом будет поместить ее в отдельный объект и использовать этот объект как аргумент при вызове Monitor.Enter/Exit(). Кроме того, в C# существует ключевое слово lock, это полный аналог нашего класса CScopeLock.

    lock (this)

    {

      m_dwSmth = dwSmth;

    }

    А вот Monitor.TryEnter() в C# (о, чудо!) принимает в качестве параметра максимальный период ожидания.

    Замечу, что CLR – это не только C#, все это применимо и к другим языкам, использующим CLR.

    Java

    В этом языке используется подобный механизм, только место ключевого слова lock есть ключевое слово synchronized, а все остальное – точно так же.

    synchronized (this)

    {

      m_dwSmth = dwSmth;

    }


    Рекомендуем скачать другие рефераты по теме: реферат на экономическую тему, инновационная деятельность.



    Предыдущая страница реферата | 16  17  18  19  20  21  22  23  24  25  26 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •