Ada_Ru форум

Обсуждение языка Ада

Re: [ada_ru] Lock-free list

Оставить новое сообщение

Сообщения

kazakov1961
Re: [ada_ru] Lock-free list
2009-07-17 14:10:13

On Fri, 17 Jul 2009 16:46:58 +0400, you wrote:

 

Dmitry A. Kazakov wrote:

 

Я в свое время обкатывал идею как на Аде сделать lock-free "exchange" (надо как для списков, так и счетчиков ссылок), при этом не прибегая к машинным инструкциям (как оно обычно делается в литературе), но ничего подходящего не придумал. Если кто знает, интересно было бы обсудить.

 

Использование машинных инструкций в моём случае не критично, я их уже использую.

 

Хотелось бы 100% Ада. (:-))

 

Раскрою маленький "секрет". GCC сейчас имеет набор встроенных

кроссплатформенных примитивов для атомарных операций. Я давно мечтаю сделать пакет для GNAT-а, но мечта не вступит в силу до переезда на ядро GCC 4.4, поскольку там поменяют семантику одной из операций (nand если я правильно помню). Если интересно, то прилагаю проект соответствующего пакета.

 

Очень интересно. И как далеко оно кроссплатформенно? От ОС зависит, на VxWorks пойдет? Какие CPU?

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Dmitry A. Kazakov wrote:

 

Раскрою маленький "секрет". GCC сейчас имеет набор встроенных

кроссплатформенных примитивов для атомарных операций. Я давно мечтаю сделать пакет для GNAT-а, но мечта не вступит в силу до переезда на ядро GCC 4.4, поскольку там поменяют семантику одной из операций (nand если я правильно помню). Если интересно, то прилагаю проект соответствующего пакета.

 

Очень интересно. И как далеко оно кроссплатформенно? От ОС зависит, на VxWorks пойдет? Какие CPU?

 

Теоретически - кроссплатформено. Поддерживается либо как раскрываемый код, либо как вызов библиотечной функции. Точно работает как

раскрываемый код на x86, x86-64. А в остальном наверное лучше задать вопрос ребятам в AdaCore ;-)

On Fri, 17 Jul 2009 20:56:07 +0400, you wrote:

 

Dmitry A. Kazakov wrote:

 

Раскрою маленький "секрет". GCC сейчас имеет набор встроенных

кроссплатформенных примитивов для атомарных операций. Я давно мечтаю сделать пакет для GNAT-а, но мечта не вступит в силу до переезда на ядро GCC 4.4, поскольку там поменяют семантику одной из операций (nand если я правильно помню). Если интересно, то прилагаю проект соответствующего пакета.

 

Очень интересно. И как далеко оно кроссплатформенно? От ОС зависит, на VxWorks пойдет? Какие CPU?

 

Теоретически - кроссплатформено. Поддерживается либо как раскрываемый код, либо как вызов библиотечной функции. Точно работает как

раскрываемый код на x86, x86-64. А в остальном наверное лучше задать вопрос ребятам в AdaCore ;-)

 

Если уж по гамбургскому счету, то не им, а ARG-у. Можно было бы прописать Ada.Atomic_Actions пакет или т.п. с атомарными типами, например

 

type Atomic_Unsigned_n is mod 2**n;

 

и соответствующими атомарными операциями на них, плюс процедуры обмена. Если машина, допустим, что-то не может, то реализация осуществляется через protected object, но так, чтобы ее все равно можно было пользовать из другой protected action.

 

Идея в том, что я не вижу смысла навешивать эти примитивы на стандартные типы и пользовать access для параметров. Это не в духе Ады да и

практической пользы никакой.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти