| 1 2 3 4 |
| Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 09:17 | ||
| Оценка: | -1 | ||
| Статья: Активные объекты в С++ Библиотека эмуляции активных объектов на С++ в духе Active Oberon. Автор: Владимир Лось Оглавление
0. Пара слов вначале
|
| Re: Активные объекты в С++ | |
| От: | Cyberax | ||
| Дата: | 21.03.05 09:39 |
| Сергей Губанов пишет: > *Статья:* > Активные объекты в С++ <http://qnxclub.net/files/articles/ao/ao.html> > Библиотека эмуляции активных объектов на *С++* в духе *Active Oberon*. Зверско... Не говоря уж о том, что неэффективно и непрактично. Boost.Threads поудобнее будет: http://www.boost.org/doc/html/threads.html В частности, вместо Await есть http://www.boost.org/doc/html/condition.html А если уж совсем кровожадно, то ACE: http://www.cs.wustl.edu/~schmidt/ACE.html -- С уважением, Alex Besogonov (alexy@izh.com) Posted via RSDN NNTP Server 1.9 Sapienti sat! |
| Re: Активные объекты в С++ | |
| От: | Mr. None | ||
| Дата: | 21.03.05 10:00 | ||
| Оценка: | 4 (3) | ||
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Статья: СГ>Активные объекты в С++ СГ>Библиотека эмуляции активных объектов на С++ в духе Active Oberon. СГ>Автор: СГ>Владимир Лось Не чувак внатуре крут. Знание Семёна Альтова и КВН у него точно на высоте... Вот только я не понял одного, он там в 2-ой главе ставит вопрос: "Что такое активные объекты?" и даёт 2 неправильных ответа, а где правильный-то? (Русская народная пословица) Да и избранный стиль повествования меня как-то уж очень напряг, дальше 3-ей главы вдумчиво прочитать мне не удалось... Все эти лирические отступления как-то уж очень сбивают.. (Булгаков, Собачье сердце.) Да специально для тех, кто тоже из этой статьи так и не понял, что такое активные объекты. Объясняю: активный объект — это объект обладающий собственным потоком управления, в рамках которого будут исполняться все запросы (синхронные или асинхронные) к данному объекту. Чтобы не было криков относительно того, откуда вы это взяли и это не совпадает с понятием активных объектов из оберона. Отвечаю — это классическое определение активного объекта, взятое мной из книги Энтони Элиенса "Объектно-ориентированное программирование". Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду. |
| Re: Активные объекты в С++ | |
| От: | eao197 | ||
| Дата: | 21.03.05 11:03 | ||
| Оценка: | +1 | ||
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Статья: СГ>Активные объекты в С++ СГ>Библиотека эмуляции активных объектов на С++ в духе Active Oberon. СГ>Автор: СГ>Владимир Лось О стиле данной статьи лучше вообще не говорить, т.к. мне он помешал вдумчиво прочитать ее. Все чего смог -- это просмотреть по диагонали. А вот эта фраза: сразу же отбила желание читать дальше. Если уж архитектор (проектировщик) не должен думать о том, будет ли приложение работать в виде одного многопоточного процесса или множества однопоточных процессов, то... Хотя бы узнать о каких задачах тогда вообще идет речь. Хотя на примерах. ... << RSDN@Home 1.1.4 beta 4 rev. 303>> |
| Re[2]: Активные объекты в С++ | |
| От: | Mr. None | ||
| Дата: | 21.03.05 11:08 | ||
| Оценка: | +1 ![]() | ||
| Здравствуйте, eao197, Вы писали: E>Здравствуйте, Сергей Губанов, Вы писали: E>О стиле данной статьи лучше вообще не говорить, т.к. мне он помешал вдумчиво прочитать ее. Все чего смог -- это просмотреть по диагонали. Аналогично... До 3-ей главы кое-как прочёл, но потом иссяк... E>Если уж архитектор (проектировщик) не должен думать о том, будет ли приложение работать в виде одного многопоточного процесса или множества однопоточных процессов, то... Хотя бы узнать о каких задачах тогда вообще идет речь. Хотя на примерах. Вот о таких наверное:
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду. |
| Re[2]: Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 11:42 |
| Здравствуйте, Mr. None, Вы писали: MN>Вот только я не понял одного, он там в 2-ой главе ставит вопрос: "Что такое активные объекты?" MN>и даёт 2 неправильных ответа, а где правильный-то? Это понятие объясняется в дальнейших главах, хотя конкретного определения самого термина не дается. MN>Да специально для тех, кто тоже из этой статьи так и не понял, что такое активные объекты. Объясняю: MN>активный объект — это объект обладающий собственным потоком управления, в рамках которого будут исполняться все запросы (синхронные или асинхронные) к данному объекту. MN>Чтобы не было криков относительно того, откуда вы это взяли и это не совпадает с понятием активных объектов из оберона. Отвечаю — это классическое определение активного объекта, взятое мной из книги Энтони Элиенса "Объектно-ориентированное программирование". Можно выполнять запросы в потоке выполнения запрашиваемого объекта, а можно и в исходном потоке запрашивающего объекта. Можно так, а можно сяк. С какой стати это дело вдруг имеет отношение к определению активного объекта? Активный объект — это носитель активности (потока исполнения) и носитель данных (в том числе и эксклюзивных) причем синхронизация активностей осуществляется способом описываемым ниже. Доступ к эксклюзивным данным можно получить только с помощью методов этого объекта и никак иначе. Вся-перевся синхронизация активностей организуется только лишь внутри методов объекта изменяющих/читающих данные. Все-перевсе условия синхронизации сводятся всего лишь к трем пунктам: Борьба за эксклюзивный доступ к данным. Ожидание выполнения какого-то условия. Ожидание процессорного времени (недоступен для программиста пишущего программу на ЯВУ) Борьба за эксклюзивный доступ: Active Oberon:
C#
Ожидание выполнения какого-либо условия (обязательно только ВНУТРИ эксклюзивного блока) Active Oberon:
C#
Перед входом в эксклюзивный блок данного объекта активности выстраиваются в очередь. Одновременно внутрь эксклюзивного блока данного объекта впускается только одна активность. До тех пор пока впущенная активность из эксклюзивного блока не вышла, остальные активности внутрь эксклюзивных блоков данного объекта не впускаются. Однако активность прорвавшаяся внутрь эксклюзивного блока может обнаружить, что какое-то нужное ей условие condition не выполнено, тогда она засыпает с помощью AWAIT(condition) (или while( ! condition) System.Threading.Monitor.Wait(this); ). Таким образом, внутри эксклюзивных блоков данного объекта теперь нет ни одной живой активности, а значит система впускает внутрь какого-то одного эксклюзивного блока данного объекта следующую активность ранее стоявшую в очереди на вход в эксклюзивный блок. Эта активность завершив свою работу покидает эксклюзивный блок, но в процессе своей работы она могла изменить состояние объекта так, что условие condition = TRUE значит заснувшие в AWAIT активности теперь должны перепроверить свои условия condition и если условие выполняется, то по очереди (по одной) тоже выполниться. Далее все по новой... Стало быть, окончательный вариант на C# имеет следующий вид: C#
Вопрос. Вот интересно, как на C# будет выглядеть аналог такого кода: Active Oberon:
т.е. атомарное изменение эксклюзивных данных происходит как до, так и после AWAIT? Короче говоря, основной смысл активных объектов заключается в том, что на них можно эффективно реализовать иструкцию AWAIT(condition) — это потому, что условие condition надо перепроверять только тогда когда какая-то другая активность покидает какой-либо из эксклюзивных блоков. В другие моменты времени условие AWAIT перепроверять не надо — ведь оно само по себе измениться не может (оно изменяется только с помощью методов объекта в эксклюзивных блоках), так что уснувший поток просто стоит в await очереди и не расходует времени CPU. Я слышал что в Active Object System BlueBottle одновременно нормально живет несколько десятков тысяч активностей (поробуйте, для сравнения, под Windows или под Linux запустить хотя бы десять тысячь потоков!) Еще короче: для организации активных объектов используются всего три понятия описанные выше и выражаемые тремя инструкциями EXCLUSIVE, AWAIT и, собственно, ACTIVE. Все остальное — вторично и выводится из этого. |
| Re[2]: Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 11:48 | ||
| Оценка: | -1 ![]() | ||
| Здравствуйте, eao197, Вы писали: E>сразу же отбила желание читать дальше. Если уж архитектор (проектировщик) не должен думать о том, будет ли приложение работать в виде одного многопоточного процесса или множества однопоточных процессов, то... Хотя бы узнать о каких задачах тогда вообще идет речь. Хотя на примерах. В объектно ориентированной операционной системе Aos BlueBottle в отличие от Windows, UNIX, и т.п. нет разбиения на процессы и потоки внутри процессов, там есть всего одна универсальная сущность — активный объект. Так что архитектору и в самом деле нет нужды думать об упомянутых Вами заморочках присущих не ОО системам. |
| Re[3]: Активные объекты в С++ | |
| От: | Cyberax | ||
| Дата: | 21.03.05 11:55 |
| Сергей Губанов пишет: > E>сразу же отбила желание читать дальше. Если уж архитектор > (проектировщик) не должен думать о том, будет ли приложение работать в > виде одного многопоточного процесса или множества однопоточных > процессов, то... Хотя бы узнать о каких задачах тогда вообще идет > речь. Хотя на примерах. > В объектно ориентированной операционной системе Aos BlueBottle > <http://bluebottle.ethz.ch/> в отличие от Windows, UNIX, и т.п. нет > разбиения на процессы и потоки внутри процессов, там есть всего *одна > универсальная сущность — активный объект*. Активный объект в AOS — это ОБЫЧНЫЙ поток. Просто вместо потоковой функции — объект. ВСЕ, БОЛЬШЕ РАЗНИЦЫ НЕТ! -- С уважением, Alex Besogonov (alexy@izh.com) Posted via RSDN NNTP Server 1.9 Sapienti sat! |
| Re[3]: Активные объекты в С++ | |
| От: | Mr. None | ||
| Дата: | 21.03.05 11:55 | ||
| Оценка: | +1 ![]() | ||
| Здравствуйте, Сергей Губанов, Вы писали: СГ>В объектно ориентированной операционной системе Aos BlueBottle в отличие от Windows, UNIX, и т.п. нет разбиения на процессы и потоки внутри процессов, там есть всего одна универсальная сущность — активный объект. Так что архитектору и в самом деле нет нужды думать об упомянутых Вами заморочках присущих не ОО системам. Ну ладно, умолкаем, мы все тут такие не грамОтные академиев не кончали, пишем себе с заморочками присущими не ОО системам. И енти самые ОО системы очевидно только для избранных и понять нам их не дано... Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду. |
| Re[3]: Активные объекты в С++ | |
| От: | eao197 | ||
| Дата: | 21.03.05 12:05 |
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, eao197, Вы писали: E>>сразу же отбила желание читать дальше. Если уж архитектор (проектировщик) не должен думать о том, будет ли приложение работать в виде одного многопоточного процесса или множества однопоточных процессов, то... Хотя бы узнать о каких задачах тогда вообще идет речь. Хотя на примерах. СГ>В объектно ориентированной операционной системе Aos BlueBottle в отличие от Windows, UNIX, и т.п. нет разбиения на процессы и потоки внутри процессов, там есть всего одна универсальная сущность — активный объект. Так что архитектору и в самом деле нет нужды думать об упомянутых Вами заморочках присущих не ОО системам. Но ведь в этой системе нельзя программировать на C++. Так зачем же в язык пытаться тащить сущности, которые предназначены не только для другого языка, но и для другой среды исполнения? ... << RSDN@Home 1.1.4 beta 4 rev. 303>> |
| Re[4]: Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 12:12 |
| Здравствуйте, Cyberax, Вы писали: C>Активный объект в AOS — это ОБЫЧНЫЙ поток. Просто вместо потоковой C>функции — объект. ВСЕ, БОЛЬШЕ РАЗНИЦЫ НЕТ! Вы еще скажите что между структурой в языке Си и классом в языке С++ тоже разницы нету. Естественно, что на низком уровне все устроено одинаково, а уж на уровне машинных команд разницы вообще нет. Разница она на более высоком уровне абстракции. Такая сущность как активный объект сводит всю сложную проблему синхронизации процессов+потоков всего лишь к трем понятиям: EXCLUSIVE, AWAIT, ACTIVE, все остальное выводится из них. С другой стороны, эффективно реализовать инструкцию AWAIT в не ОО системе или нереально (большая нагрузка на CPU в бесконечных циклах ожидания на каждый поток) или небезопасно (слишком велика вероятность ошибки программиста приводящих к странным и непонятным зависаниям и т.п. где-то забыл Monitor.PulseAll() написать, где-то лишний раз написал...). |
| Re[3]: Активные объекты в С++ | |
| От: | Mr. None | ||
| Дата: | 21.03.05 12:12 | ||
| Оценка: | +2 | ||
| Здравствуйте, Сергей Губанов, Вы писали: СГ>Здравствуйте, Mr. None, Вы писали: MN>>Вот только я не понял одного, он там в 2-ой главе ставит вопрос: "Что такое активные объекты?" MN>>и даёт 2 неправильных ответа, а где правильный-то? СГ>Это понятие объясняется в дальнейших главах, хотя конкретного определения самого термина не дается. Сударь, вы кажется сам к.ф.-м.н. (или я ошибаюсь) и должны знать, что согласно банальной культуре оформления статей (научных и научно-публицисчтических) если поставил вопрос, ответь на него чётко и ясно, тем более, когда есть обще-принятое определение. А тут, извините, нам рассказали на 2-ух примерах, что не является активным объектом (причём примеры какие-то уж очень вымученные и не реальные) и дальше раздули флейм на несколько страниц с приведением нечитабельных примеров кода... Про стиль изложения я вообще молчу, назвать его можно одним словосочетанием — непрофессиональный стёб. MN>>Да специально для тех, кто тоже из этой статьи так и не понял, что такое активные объекты. Объясняю: MN>>активный объект — это объект обладающий собственным потоком управления, в рамках которого будут исполняться все запросы (синхронные или асинхронные) к данному объекту. MN>>Чтобы не было криков относительно того, откуда вы это взяли и это не совпадает с понятием активных объектов из оберона. Отвечаю — это классическое определение активного объекта, взятое мной из книги Энтони Элиенса "Объектно-ориентированное программирование". СГ>Можно выполнять запросы в потоке выполнения запрашиваемого объекта, а можно и в исходном потоке запрашивающего объекта. Можно так, а можно сяк. С какой стати это дело вдруг имеет отношение к определению активного объекта? ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД.ЦЕНЗУРЕД. Да потому что это КЛАССИЧЕСКОЕ КАНОНИЧЕСКОЕ ОПРЕДЕЛЕНИЕ АКТИВНОГО ОБЪЕКТА, взятое из упомянутой мной книги. В этой книге оно появилось из другого источника, ссылка на него там есть — можете проследить до самых корней. Термин никак не связан ни с оберонами, ни с паскалями, ни с г-ном Н. Виртом (я искренне уважаю этого человека, но мне очень ненравится, когда его именем прикрывают непрофессиональный бред). Если нужно, я подниму эту книгу и расскажу вам историю возникновения активных объектов. А откуда вы взяли своё определение активных объектов... Ссылку пожалуйста... Желательно с историческими корнями... Вот пока не приведёте ссылку, давайте вы не будете переливать из пустого в порожнее. СГ>Вопрос. Вот интересно, как на C# будет выглядеть аналог такого кода: СГ>Active Oberon: СГ>
СГ>т.е. атомарное изменение эксклюзивных данных происходит как до, так и после AWAIT? То есть думать о заморочках присущих не ОО системам — это не по пацански, а думать о заморочках присущих активным оберонам — это круто... Так что ли? Так маленькое замечание — обращение к активному объекту из вне не должно никак отличаться от обращения к обычному объекту... Так что приведённый вами код — это как раз заморочки оберона... Реализационно активный объект отличается от обычного наличием внутреннего потока управлений, в котором он выполняет вычисления, читай: активный объект живёт в своём потоке. А все запросы к нему, обычно выполняемые самым обычным для данного языка способом (вызов метода в C++, посылка сообщения в Smalltalk`е), синхронизируются в этот самый поток и в нём выполняются. Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду. |
| Re[4]: Активные объекты в С++ | |
| От: | Трурль | ||
| Дата: | 21.03.05 12:19 |
| Здравствуйте, Cyberax, Вы писали: C>Активный объект в AOS — это ОБЫЧНЫЙ поток. А почему не "обычный процесс"? |
| Re[4]: Активные объекты в С++ | |
| От: | Mr. None | ||
| Дата: | 21.03.05 12:21 |
| Здравствуйте, Cyberax, Вы писали: C>Сергей Губанов пишет: C>Активный объект в AOS — это ОБЫЧНЫЙ поток. Просто вместо потоковой C>функции — объект. ВСЕ, БОЛЬШЕ РАЗНИЦЫ НЕТ! Ну если это так, то это не активный объект и пример г-на Губанова вообще не корректен. Ещё раз определение активного объекта — это объект обладающий собственным потоком управления, в рамках которого будут исполняться все запросы (синхронные или асинхронные) к данному объекту. То есть, активный объект — это не объектная обёртка над потоковой функцией с определённым кодом, а полноценный объект с набором методов, умеющих синхронизировать вызовы этих методов в свой внутренний поток, в котором они будут исполняться... Вот пример простейшего активного объекта:
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду. |
| Re[5]: Активные объекты в С++ | |
| От: | Cyberax | ||
| Дата: | 21.03.05 12:24 | ||
| Оценка: | 40 (2) | ||
| Сергей Губанов пишет: > C>Активный объект в AOS — это ОБЫЧНЫЙ поток. Просто вместо потоковой > C>функции — объект. ВСЕ, БОЛЬШЕ РАЗНИЦЫ НЕТ! > Вы еще скажите что между структурой в языке Си и классом в языке С++ > тоже разницы нету. Представьте себе, сейчас в fido7.ru.cpp был флейм на эту тему. Я привел в нем пример паттерна visitor, написанного на обычном С. http://groups-beta.google.com/group/fido7.ru.cpp/msg/f7b6c66625376378 > Такая сущность как активный объект сводит всю сложную проблему > синхронизации процессов+потоков всего лишь к трем понятиям: > *EXCLUSIVE*, *AWAIT*, *ACTIVE*, все остальное выводится из них. Exclusive == mutex. Await == monitor with condition. active == thread. > С другой стороны, эффективно реализовать инструкцию *AWAIT* в не ОО > системе или нереально (большая нагрузка на CPU в бесконечных циклах > ожидания на каждый поток) или небезопасно (слишком велика вероятность > ошибки программиста приводящих к странным и непонятным зависаниям и > т.п. где-то забыл Monitor.PulseAll() написать, где-то лишний раз > написал...). Объясняю: в Обероне AWAIT кривой и косой. Выражение в AWAIT не должно иметь побочных эффектов (а это сразу отметает использование в нем функций), плюс должна быть возможность отследить его транзитивное замыкание. Императивные языки (в том числе и Оберон) этого сделать НЕ позволяют, так что AWAIT в них реализуется как простенький синтаксический сахар над обычными мониторами. Поэтому об "эффективном использовании AWAIT в Обероне" лучше бы молчали. Функциональные языки со ссылочной целостностью как раз ПОЗВОЛЯЮТ реализовать AWAIT в полном объеме и эффективно. В том же MLе есть действительно прозрачная многозадачность: http://portal.acm.org/citation.cfm?id=866513 Есть и практическая реально используемая реализация: Erlang. -- С уважением, Alex Besogonov (alexy@izh.com) Posted via RSDN NNTP Server 1.9 Sapienti sat! |
| Re[5]: Активные объекты в С++ | |
| От: | Privalov | ||
| Дата: | 21.03.05 12:36 |
| Здравствуйте, Трурль, Вы писали: C>>Активный объект в AOS — это ОБЫЧНЫЙ поток. Т>А почему не "обычный процесс"? Потому что в системах типа Windows процесс содержит не менее одного потока. В последней Обероновой войне, где речь шла о защите памяти, можно найти подробности. Вкратце — все активные объекты Оберона выполняются в общем адресном пространстве, т. е. в терминологии Windows это — потоки. |
| Re[5]: Активные объекты в С++ | |
| От: | Cyberax | ||
| Дата: | 21.03.05 12:49 |
| Mr. None пишет: > C>*Активный объект в AOS* — это ОБЫЧНЫЙ поток. Просто вместо потоковой > C>функции — объект. ВСЕ, БОЛЬШЕ РАЗНИЦЫ НЕТ! > > Ну если это так, то это не активный объект и пример г-на Губанова > вообще не корректен. Выделено. > Ещё раз определение активного объекта — это объект обладающий > собственным потоком управления, в рамках которого будут исполняться > все запросы (синхронные или асинхронные) к данному объекту. То есть, > активный объект — это не объектная обёртка над потоковой функцией с > определённым кодом, а полноценный объект с набором методов, умеющих > синхронизировать вызовы этих методов в свой внутренний поток, в > котором они будут исполняться... Я знаю. А еще лучше в качестве активных объектов приводить в пример COM-объекты в апартаментах. -- С уважением, Alex Besogonov (alexy@izh.com) Posted via RSDN NNTP Server 1.9 Sapienti sat! |
| Re[4]: Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 12:58 |
| Здравствуйте, Mr. None, Вы писали: MN>...согласно банальной культуре оформления статей... Так, на всякий случай замечу, что это претензии, вообще-то, к автору статьи, а не ко мне. MN> Вот пока не приведёте ссылку, давайте вы не будете переливать из пустого в порожнее. Вот активные объекты, не из книжки вычитанные, а уже реализованные настоящие живые: http://bluebottle.ethz.ch/ А вот, собственно, и сам автор Prof. Dr. Jurg Gutknecht (автор языка Active Oberon, соавтор нескольких ОО операционных систем, руководитель группы Programming Languages and Runtime Systems Research Group в ETH) http://www.inf.ethz.ch/personal/gutknech/ у него на странице есть ссылки на соотвествующую литературу (правда некоторые по немецки). MN>Реализационно активный объект отличается от обычного наличием внутреннего потока управлений, в котором он выполняет вычисления, читай: активный объект живёт в своём потоке. А все запросы к нему, обычно выполняемые самым обычным для данного языка способом (вызов метода в C++, посылка сообщения в Smalltalk`е), синхронизируются в этот самый поток и в нём выполняются. Zonnon активности именно так и устроены: активные объекты могут вести диалог по заранее описанному в EBNF форме протоколу — каждый из них находится в своем потоке, а посланные ему сообщения ставятся в очередь. Только кроме этого, дополнительно, можно исполнять методы объекта как обычно — в потоке вызвавшем этот метод, а когда выполнение дойдет до EXCLUSIVE блока (если дойдет), то тут уже сложно сказать где чей поток, так как внутри EXCLUSIVE блока одновременно может находится только один поток, а какой он — вызвавший, вызываемый или третий специальный... это уже не так важно. |
| Re[5]: Активные объекты в С++ | |
| От: | Сергей Губанов | ||
| Дата: | 21.03.05 13:47 | ||
| Оценка: | -3 | ||
| Здравствуйте, Mr. None, Вы писали: MN>...Ещё раз определение активного объекта — это объект обладающий собственным потоком управления, в рамках которого будут исполняться все запросы (синхронные или асинхронные) к данному объекту... Да с какой стати все-то? Не все, а некоторые. Есть же целое семейство запросов не нуждающихся в синхронизации вообще (не имеющих EXCLUSIVE блока). Например методы навроде:
уж точно не нуждаются в синхронизации и могут исполняться непосредственно в вызывающем потоке параллельно с остальными потоками не вызывая накладных расходов на блокировку. |
| Re[6]: Активные объекты в С++ | |
| От: | Трурль | ||
| Дата: | 21.03.05 14:02 |
| Здравствуйте, Privalov, Вы писали: P>Потому что в системах типа Windows процесс содержит не менее одного потока. А причем тут "системы типа Windows" ? |
| 1 2 3 4 |