Jan. 22nd, 2007

avva: (Default)

Наткнулся на старую статью Александреску о том, как можно использовать ключевое слово volatile с объектами (а не примитивными значениями, как обычно) в C++, для того, чтобы лучше многопоточные программы писать.

Интересная техника! Но любопытно то, что Александреску нигде не отмечает, насколько предлагаемое им использование слова volatile не зависит, на самом деле, от его "смысла". Пусть меня поправят, если я неправ, но мне кажется, что предлагаемое автором использование volatile только при определении объектов, а также полей и методов классов, которые могут без опаски быть использованы одновременно разными потоками - тут volatile вообще ничего не делает с точки зрения компилируемого кода (volatile может что-то делать при использовании с примитивными типами, но как раз этого Александреску советует не делать, а заворачивать их в таких случаях в объекты!).

Иными словами, то, что нужно, это некое абстрактное ключевое слово foobaric, так чтобы: а) любой объект можно было объявить foobaric; б) в таком случае его члены автоматически становятся foobaric; в) метод класса можно было объявить foobaric; г) foobaric-объект может вызывать только foobaric-методы своего класса; д) от объекта можно отобрать его foobaric-сущность каким-нибудь приведением.

Если у нас есть такой foobaric, то мы можем сделать умный указатель а-ля Александреску, который все время своей жизни проводит внутри мьютекса, и переводит вызовы foobaric-объекта, которым был инициализирован, в вызовы того же объекта без foobaric, который он сохранил внутри путем приведения.

Александреску делает это при помощи foobaric==volatile, но это не использует ничего из "настоящей" семантики volatile, а просто применяет volatile в качестве такого foobaric-маркера. Можно было бы, например, в качестве foobaric использовать const и mutable (для методов), но тогда "настоящая" семантика const мешалась бы под ногами. Сам факт того, что для решения этой проблемы пришлось "позаимствовать" вообще-то предназначенное для другого (хоть на первый взгляд и родственного) слово volatile, указывает на то, что, возможно, стоит иметь гибкую поддержку такого рода "маркеров" прямо в языке. И тут, видимо, мне самое время прочитать статьи про Traits, которые недавно бросил в закладки, но пока не добрался...

avva: (Default)

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

стихи

Jan. 22nd, 2007 09:28 pm
avva: (Default)

Очень, очень понравилось недавнее Алексея Цветкова:

стал он звать золотую рыбку
голосом молвит человечьим
хочет в бабы секретаршу ритку
и за декабрь ипотеку тоже нечем
приплыла к нему рыбка спросила
записала в блокнот и все забыла
ни чтоб здрасьте ему ни он спасибо
чайка подписью под досье залива
что еще скажешь синему морю
плесни в стакан чем помочь горю

эти рыбки и вся морская закуска
сочинение без совести и чести
жизнь как мессинский пролив где узко
там и нет прохода утони на месте
что ни утро ни дома нигде ни ритки
пушкин на ветвях кот ученый в мыле
так и тянет к прибору типа бритвы
кота наголо и себе опочить в мире
прах любое богатство грош вся гордость
детство кончится и ничего не будет
в синем море лишь человеческий голос
без человека кричит оторванный бурей
умирает чайка голову в перья прячет
голос чуть помолчит и опять плачет

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10111213 14
15 16 17 18192021
2223 2425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 11:49 pm
Powered by Dreamwidth Studios