Здравствуйте, Andrei F., Вы писали:
AF>http://herbsutter.spaces.live.com/blog/cns!2D4327CC297151BB!330.entry AF>Похоже, что сборки мусора и/или многопоточности в стандарте не будет, а сам стандарт будет выпущен в лучшем случае в 2009 году. Результат вполне закономерный, я не удивлен.
То есть? Вроде бы написано, что многопоточность они собираются принять, а для GC собираются сделать только чтобы он был возможен.
Здравствуйте, astral_marine, Вы писали:
_>Здравствуйте, Cyberax, Вы писали: C>>... для GC собираются сделать только чтобы он был возможен. _>А разве его сейчас нельзя реализовать? По-моему уже есть работающие реализации.
Только консервативный (т.е. мегахак).
Здравствуйте, Cyberax, Вы писали:
C>То есть? Вроде бы написано, что многопоточность они собираются принять, а для GC собираются сделать только чтобы он был возможен.
-concepts (a way to write constraints for templates that lets us get way better error messages, overloading, and general template usability)
-advanced concurrency libraries (e.g., thread pools and reader-writer locks)
-garbage collection
Probably the biggest thing we did at this meeting was to choose time over scope: We decided that we can't ship C++0x without concepts, but we can and will ship without some or all of the other two.
То есть наверно какая-то поддержка многопоточности будет, но что из нее они посчитают "advanced" — это еще большой вопрос.
Andrei F. wrote: > То есть наверно какая-то поддержка многопоточности будет, но что из нее > они посчитают "advanced" — это еще большой вопрос.
Лично для меня это вполне нормально. Я лучше буду самопальные пулы
потоков использовать, заточеные под мою задачу. Самое главное — чтобы
сделали основные примитивы многопоточности и написали внятную модель памяти.
Здравствуйте, Andrei F., Вы писали:
AF>Здравствуйте, Cyberax, Вы писали:
C>>Самое главное — чтобы C>>сделали основные примитивы многопоточности и написали внятную модель памяти.
AF>тоже еще не факт
Сами-то хоть Саттера прочитали или же только первых два абзаца?
What we voted into draft C++0x
Here is a list of the main features we voted into the C++0x working draft at this meeting, with links to the relevant papers to read for more information.
nullptr (N2431)
...
Explicit conversion operators (N2437 and N2434)
...
Concurrency memory model (N2429)
As I wrote in "The Free Lunch Is Over", chip designers and compiler writers "are under so much pressure to deliver ever-faster CPUs that they’ll risk changing the meaning of your program, and possibly break it, in order to make it run faster." This only gets worse in the presence of multiple cores and processors.
A memory model is probably of the lowest-level treaty between programmers and would-be optimizers, and fundamental for any higher-level concurrency work. Quoting from my memory model paper: "A memory model describes (a) how memory reads and writes may be executed by a processor relative to their program order, and (b) how writes by one processor may become visible to other processors. Both aspects affect the valid optimizations that can be performed by compilers, physical processors, and caches, and therefore a key role of the memory model is to define the tradeoff between programmability (stronger guarantees for programmers) and performance (greater flexibility for reordering program memory operations)."
Atomic types (N2427)
Closely related to the memory model is the feature of atomic types that are safe to use concurrently without locks. In C++0x, they will be spelled "atomic<T>". Here's a sample of how to use them for correct (yes, correct!) Double-Checked Locking in the implementation of a singleton Widget:
You might have noticed that the above example used a lock<mutex>. Those are now in the draft standard too. C++0x now includes support for threads, various flavors of mutexes and locks, and condition variables, along with some other useful concurrency helpers like an efficient and portable std::call_once.
Это то, что уже включено в черновой вариант стандарта, в отличии от пулов нитей и reader-writter синхронизирующих примитивов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Сами-то хоть Саттера прочитали или же только первых два абзаца?
В опере часть страницы почему-то обрезалась.
E>Это то, что уже включено в черновой вариант стандарта, в отличии от пулов нитей и reader-writter синхронизирующих примитивов.
Здравствуйте, Andrei F., Вы писали:
E>>Это то, что уже включено в черновой вариант стандарта, в отличии от пулов нитей и reader-writter синхронизирующих примитивов. AF>А где события, асинхронные вызовы?
События — это что? Про асинхронные вызовы (future<T>) написано, что они могут не пройти.
Andrei F. wrote: > C>События — это что? > то, что в WinAPI называется event
По-моему, вполне должны быть.
> C>Про асинхронные вызовы (future<T>) написано, что они могут не пройти. > Значит, скорее всего и не пройдут.
Не беда, их можно самому легко сделать.
Вообще, мне большая стандартная библиотека в С++ все равно не очень-то
нравится. Хотя бы потому, что с ней опять будет куча проблем с мелкими
несовместимостями между компиляторами. С Boost/ACE я хотя бы знаю, что
оно себя одинаково вести себя везде будет.
Ну и сторонние библиотеки эволюционируют быстрее. Например, кто
использует систему локализации, в STL?
AF>Результат вполне закономерный, я не удивлен.
Не понимаю иронии.
Я вот лично был бы крайне удивлен, если б Саттер вдруг написал, что окончательный стандарт выходит в следующем месяце, и в него войдут все существующие предложения и все существующие баги будут пофикшены.
Здравствуйте, Cyberax, Вы писали:
C> С Boost/ACE я хотя бы знаю, что оно себя одинаково вести себя везде будет.
Это да. TAO 1.4a (ACE 5.4) при компиляции в Visual Studio 6.0 совершенно одинаково, то есть независимо от установленного SP3, SP5 или SP6, приводит к аварийному завершению при закрытии Visual Studio. И это еще ничего, хоть компиляция и сборка успешно заканчиваются, при попытке же скомпилировать ACE 5.5 + TAO 1.5 VS 6.0 просто падает напрочь и не шевелится.
igna wrote: > C> С Boost/ACE я хотя бы знаю, что оно себя одинаково вести себя везде > будет. > Это да. TAO 1.4a (ACE 5.4) при компиляции в Visual Studio 6.0 совершенно > одинаково, то есть независимо от установленного SP3, SP5 или SP6, > приводит к аварийному завершению при закрытии Visual Studio.
Ну это глюки древних компиляторов — сколько уже можно мучать VS6?
Здравствуйте, Andrei F., Вы писали:
C>>События — это что?
AF>то, что в WinAPI называется event
Это просто семафор со счётчиком = 1
Вроде так он и реализован в винде, т.е. если будет примитив-семафор, то все остальные делаются тонкой прослойкой в либе.
bManualReset
[in] Boolean that specifies whether a manual-reset or auto-reset event object is created. If TRUE, then you must use the ResetEvent function to manually reset the state to nonsignaled. If FALSE, the system automatically resets the state to nonsignaled after a single waiting thread has been released.
ИМХО выделеное с семафором не стыкуется.
Причем устанавливать и сбрасывать событие можно по настроению.
Например в винде есть пара забавных event'ов
\KernelObjects\HighMemoryCondition
\KernelObjects\LowMemoryCondition
Используются системами с активнам управлением памятью например: MS SQL, .NET
V>т.е. если будет примитив-семафор, то все остальные делаются тонкой прослойкой в либе.
Теоритически да. Но приктически решение будет так себе.
Особенно если вспомнить про различные lock-free структуры данных.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Cyberax, Вы писали:
C>Только консервативный (т.е. мегахак).
А как ты вообще видишь себе прикручивание точного ЖЦ к языку допускающему небезопасные операции с памятью и в котором отсуствуют такие примитивы как массивы?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei F., Вы писали:
AF> а сам стандарт будет выпущен в лучшем случае в 2009 году. Результат вполне закономерный, я не удивлен.
Наивняк ты, однако.
Этому стандарту не зра присвоили номер 0х. Это же шеснадцатиричный префикс, так что в него можно записать любую фиру от 0 до F. А при очень большом желании можно записать и две-три цифры.
Так что 9-ы год — это не очень реальная дата. Вот A-F — это более реальный срок. За одно можно преурочить выход нового стандарта к какому-нибудь юбилею. Например, к столетию Страутрупа.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Наивняк ты, однако. VD>Этому стандарту не зра присвоили номер 0х. Это же шеснадцатиричный префикс, так что в него можно записать любую фиру от 0 до F. А при очень большом желании можно записать и две-три цифры. VD>Так что 9-ы год — это не очень реальная дата. Вот A-F — это более реальный срок. За одно можно преурочить выход нового стандарта к какому-нибудь юбилею. Например, к столетию Страутрупа.
Я уже года 3 на С++ забил, без крайней нужды стараюсь не иметь с ним дело. Когда приходится какой-нибудь кусок на С++ писать, так просто выворачивает, сколько проблем на ровном месте. Некоторых вещей правда не хватает, но не стоит оно того.
Была слабенькая надежда что комитет еще возьмется за ум, но теперь уже точно не судьба.
PS кстати, что меня удивляет в последнее время — это количество малолетних кулхацкеров, которые с восторгом пишут по форумам что-нибудь типа "оооо, С++ — это так круто, там все так сложно! C# и Java это вааще отстой, там все просто и проги никогда не валятся. А вот в C++ чуть что и сразу GPF, ууу, как круто" Видимо, таким вот будет новое поколение плюсовиков