Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизDelphi vs. C++ Найти похожие ветки
← →
Суслик © (2004-09-08 17:12) [480]
> Акуличев Дмитрий (08.09.04 17:08) [478]
ну в общем-то я уже с тобой выше почти согласился.
почти, т.к.надо еще посмотреть.
← →
Суслик © (2004-09-08 17:13) [481]
> Акуличев Дмитрий (08.09.04 17:11) [479]
>
> > Ты до этого сам дошел или явно прочел где-нить?
>
> И то, и другое.
Спасибо, что обратил внимание на этот факт - не знал.
Но скажи где прочел - я не помню, чтобы это факт был задокументирован в штатной доке.
Заранее благодарен за ответ.
← →
Акуличев Дмитрий (2004-09-08 17:22) [482]
> Суслик © (08.09.04 17:13) [481]
> Но скажи где прочел - я не помню, чтобы это факт был задокументирован
> в штатной доке.
Прочёл в system.pas ;-)
В доке нет смысла специально это описывать. Имело бы смысл описывать обратную ситуацию: "Внимание! Такая-то сякая-то операция не потокобезопасна!"
← →
Суслик © (2004-09-08 17:25) [483]
> Акуличев Дмитрий (08.09.04 17:22) [482]
Имело бы смысл описывать обратную ситуацию: "Внимание! Такая-то сякая-то операция не потокобезопасна!"
ну уж не надо тут нагонять: полно непотокобезопасный операций.
например невинная операция.var
I: Int64;
procedure TForm1.Button4Click(Sender: TObject);
begin
inc(I);
00452618 8305504C450001 add dword ptr [I],$01
0045261F 8315544C450000 adc dword ptr [I + $4],$00
end;
Как раз логичнее было бы предположить, что и работа со строками не потокобезопасная.
← →
cyborg © (2004-09-08 17:28) [484]Можно и в обратном направлении пойти :), а-то в Паскале нет то, нет сё.
В си нету string-ов таких удобных и нулевой символ нельзя хранить в строке хы хы :)
И нету модулей хе хе
И компиляция идёт долго ха ха
Ошибки запаришься искать гы гы
Вот так, теперь докажи, что не верблюд? ;)
← →
Суслик © (2004-09-08 17:31) [485]2cyborg © (08.09.04 17:28) [484]
каюсь, давно офтоп развел - про си и дельфи ужа мало кто спорит.
теперь у старших товарищей получаю уроки, которые мне помогают понять, что я такого не знал в дельфи, что си мне казался краше.
:)
← →
cyborg © (2004-09-08 17:34) [486]
> [485] Суслик © (08.09.04 17:31)
Это я ктому, что вечно спорят, что в Дельфи нет того-то и того-то, в то время, когда аналогично чего-то нет в Сишных компиляторах. Уверен что ещё кучу приемуществ можно найти, может я там в чём-то и ошибся :)
← →
Nous Mellon © (2004-09-08 17:34) [487]
> [484] cyborg © (08.09.04 17:28)
еще чувствителен к регистру бу-бу :)
← →
cyborg © (2004-09-08 17:36) [488]
> [487] Nous Mellon © (08.09.04 17:34)
Что правда чтоли? :)
← →
Акуличев Дмитрий (2004-09-08 17:37) [489]
> Суслик © (08.09.04 17:25) [483]
Давай ты не будешь спешить, а будешь думать.
Для начала можешь выписать на бумажку все отличия длинных целых от строк.
← →
Суслик © (2004-09-08 17:44) [490]
> Акуличев Дмитрий (08.09.04 17:37) [489]
>
> Давай ты не будешь спешить, а будешь думать.
> Для начала можешь выписать на бумажку все отличия длинных
> целых от строк.
Давай в школу играть не будем? :))) Соберись! :)
Длинные строки имеют достаточно сложную реалзиацию, причем документированную.
Пиши не пиши, но кто тебе обещал, что в функции из system _LStrAsg будет реализована потокобезопасность? Эту же функцию можно точно также написать, и она не будет потокобезопасной.
Т.е. для реализации ее потокобезопасной, нужна воля разработчкика. А воля разработчика обычно бывает задокументированной. Об последнем факти я тебя и спрашивал. Если ответа на вопрос о документации не знаешь, ей богу не надо ничего :)))
← →
VMcL © (2004-09-08 17:45) [491]>>Nous Mellon © (08.09.04 17:34) [487]
AFAIR, чувствительность к регистру можно отключить в опциях.
← →
Акуличев Дмитрий (2004-09-08 18:09) [492]
> Суслик © (08.09.04 17:44) [490]
Не хочешь играть в школу -- думай сам, вся первичная информация у тебя для этого есть. Или удавись.
← →
Суслик © (2004-09-08 18:36) [493]
> Акуличев Дмитрий (08.09.04 18:09) [492]
Или удавись.
Ты опять стал хамить.
Очень зря, т.к. ты для учителя как минимум неинформативен. Если тебе доставляет удовольствие обучение, то нужно чуть больше трудится: ну например в качестве демонстрации доброй воли дать хоть раз нормальный ответ на свой наводящий вопрос. Я верю, что такой ответ есть. Но далее моей веры это дело не идет - глазами бы увидеть :))
← →
Nous Mellon © (2004-09-08 18:54) [494]
> AFAIR, чувствительность к регистру можно отключить в опциях.
Если это так то это наверно одно из самых заблуждений моей жизни...
А в опциях чего, среды? У меня VS.NET никак не найду но тма их столько что мог и просмотреть
← →
Ihor Osov'yak © (2004-09-08 19:25) [495]2 [414] vuk © (08.09.04 14:19)
> Вмешиваться иной раз все-таки нужно. Но только делать это нужно с полным пониманием происходящего.
Это из розряда исключений, подчеркивающих правило. Впрочем, раз применял такую технику.. Естественно, снабдив очень подробными комментариями.. И долго думая перед этим, а стоит ли связываться. Но там иного варианта не было. Правда, за последних три года не было необходимости повторить эту технику.
2 [413] Суслик ©
> Зачем тогда initilize и finilize документированы?
Это, кажется, Акуличев Дмитрий уже ответил.
> ЗЫ. Еще огромная просьба - сбавить назидательность.
Ок, принято. Но ты немного провоцируешь :-)
>, что был непонят исходный вопрос
нет, был понят. Может аналогия просто не совсем удачная.
зы. А ветка, в общем-то, интересной получилась....
Вот только Romkin мой немного провокационный пост ([312] 07.09.04 16:19)) проигнорировал
← →
Акуличев Дмитрий (2004-09-08 19:33) [496]
> Суслик © (08.09.04 18:36) [493]
Проблемы с потоками возникают когда данные находятся в общей памяти, например, глобальные переменные, или переданы по ссылке. Тогда возможен конкурентный доступ на запись.
Теперь рассмотрим случай, когда атомарный тип и строка передаются по значению. С атомарным типом ничего особенного не происходит, создаётся копия и всё. Но это не так для строк. Строка, логически переданная по значению физически является разделяемой копией.
Но в язык строки введены таким образом, чтобы максимально приблизить их поведение к поведению атомарных типов.
← →
Суслик © (2004-09-08 19:35) [497]
> Ihor Osov"yak © (08.09.04 19:25) [495]
> Это, кажется, Акуличев Дмитрий уже ответил.
Он предположил (т.к. про сущестование _addref он не знал), я согласился. Хотель бы узнать не предположения, а результат более долгих размышлений.
> Ок, принято. Но ты немного провоцируешь :-)
Правда? Значит правильно делаю :))), т.к. вы тогда говорите охотней :))
> зы. А ветка, в общем-то, интересной получилась....
Да просто замечательная. К сожалению малоинформативная в основном по причине тупиковых ветвей - кто-то что-то не так понял и понеслась кривая в щавель - доказывай, что все всё не так поняли :)))
Самое полезное, что я для себя узнал, это то, что работа с длинным строками потокобезопасная (надо еще посмотреть). Сильно был этому удивлен, т.к. всегда уж непонятно почему считал иначе. К сожалению, я не смог узнать где это описано в документации.
← →
Суслик © (2004-09-08 19:41) [498]
> Акуличев Дмитрий (08.09.04 19:33) [496]
При чем здесь передача в качестве параметров?
Мы говорили про присвоение одного другому? и о том, что LStrAsn написана потокобезопасно и о том, что я от тебя хотел услышать, где ты это прочел в доке (вспомни, ты сам сказал, что это где-то читал).
А что ты скажешь про _LStrSetLength?
Она тоже потоко безопасная?
Скажу честно сразу я так определить не могу - надо посмотреть внимательнее.
Интересно твое мнение?
← →
Суслик © (2004-09-08 19:58) [499]
> Акуличев Дмитрий (08.09.04 19:33) [496]
Ну вообще знаешь, старичок, ты наверное прав про потокобезопасность строк: в функции _LStrSetLength работа со счетчиком ссылок также идет как00404246 F0FF4AF8 lock dec dword ptr [edx-$08]
Ты не разбирался с дин массивами - они тоже потокобезопасные?
← →
начинающий © (2004-09-08 20:23) [500]Сказать, что обсуждение не отвечает сабжу - ничего не сказать! Понятно и так, что Дельфи имеет более сильные и более слабые стороны по сравнению с С++. Я, создавая сабж надеялся, что мне помогут здесь понять причину появления слухов о низкой производетельности Дельфи и плохой интеграции с другими технологиями. А вышло, как вышло. Жаль. Модераторы действительно решили дать возможность пофлеймить всем желающим.
Хотя моя делема неразрешена, зато я вижу не зря создал сабж - от этого топика польза, как от алхимии: цели достигнуты небыли, но зато на пути их достижения было сделано множество полезных открытий.
← →
Игорь Шевченко © (2004-09-08 21:13) [501]Суслик © (08.09.04 19:58) [499]
Ты когда-нибудь книги читать научишься ? Или это настолько тяжкий труд, вроде как мешки ворочать ?
> _LStrSetLength?
> LStrAsn
Открой System.pas и изучай до полного просветления. Когда изучишь - сдай экзамен на форуме.
← →
DiamondShark © (2004-09-08 21:15) [502]
> Я, создавая сабж надеялся, что мне помогут здесь понять
> причину появления слухов о низкой производетельности Дельфи
> и плохой интеграции с другими технологиями.
А по-моему, на этот вопрос ответили: незнакомство с предметом.
← →
DiamondShark © (2004-09-08 21:25) [503]
> Суслик © (08.09.04 19:41) [498]
>
> При чем здесь передача в качестве параметров?
> Мы говорили про присвоение одного другому?
Передача как параметр по значению -- тоже разновидность присваивания.
Я говорил о том, что работа со строками организована так, чтобы максимально приблизиться к работе с атомарными типами.
и о том, что
> LStrAsn написана потокобезопасно и о том, что я от тебя
> хотел услышать, где ты это прочел в доке (вспомни, ты сам
> сказал, что это где-то читал).
Я сказал где прочитал: в system.pas [482]
Я не разбирался детально со всеми процедурами поддержки автоматически управляемых типов, думаю принцип везде одинаков.
Ты представь, какой бы вой стоял в мире, обнаружись со строками или массивами какие-либо проблемы ;)
← →
Cobalt © (2004-09-09 11:08) [504]Ну ладно, холи вар так холи вар!
Суслик, ты, вроде как, знаток у нас С++, объясни:
Если в классе конструктор по-умолчанию (который без параметров), объявить как private, то что же будет при объявлении переменной этого класса(или ньючении памяти под него)?
← →
KSergey © (2004-09-09 11:14) [505]> [504] Cobalt © (09.09.04 11:08)
> то что же будет при объявлении переменной
> этого класса
Фига, надо полагать? (вот только при компиляции или RunTime...)
Вот все хвалят шаблоны
Да, прикольно
Но понять по сообщениям компилятора где именно ты чего-то не того туды тычешь...
← →
wicked © (2004-09-09 12:14) [506]> VMcL [491]
> AFAIR, чувствительность к регистру можно отключить в опциях.
плохой AFAIR - если бы такое было, перестали бы компилироваться около 30 - 40% исходников... просто потому, что кто то отключил опцию...
> KSergey [505]
> Вот все хвалят шаблоны
> Да, прикольно
> Но понять по сообщениям компилятора где именно ты чего-то
> не того туды тычешь...
а шаблоны - это средство "не для всех".... так же, как и написание компонентов в делфи/билдере...
хотя разработчик, выпускающий библиотеку шаблонных классов "в свет", должен указать, какими свойствами должны обладать типы данных, используемые при подстановке в шаблон... как, например, это сделано в документации по stl...
← →
VMcL © (2004-09-09 12:32) [507]>>wicked © (09.09.04 12:14) [506]
>плохой AFAIR - если бы такое было, перестали бы компилироваться около 30 - 40% исходников... просто потому, что кто то отключил опцию...
Ну при беглом осмотре шестой студии я такой опции не нашел, но то ли в TC 2, то ли в BC++ 3 точно помню - видел.
← →
wicked © (2004-09-09 12:53) [508]> VMcL [507]
фполне может быть... но ни в msvc 6/.NET, ни в CBuilder 6, ни в gcc её нету... к остальным средам/компиляторам доступа не имею...
← →
Суслик © (2004-09-10 10:42) [509]
> Игорь Шевченко © (08.09.04 21:13) [501]
> Ты когда-нибудь книги читать научишься ? Или это настолько
> тяжкий труд, вроде как мешки ворочать ?
Какое отношение это высказывание имеет к теме потокобезопасности строк? У?
Ну, навскидочку, где вы прочли про потокобезопасность строк?
Модуль system не счтается: в нем же я нашел _addref, но вы (все) почитали ее недокументированной и недопустимой к использованию. Позвольте мне присоединиться к всеобщему мнению - что недокументировано, то не должно использоваться. Или вы пользуетесь недокументированными функциями? Ну-ну...
Итак вопрос: в какой документации конкретно вы, Игорь, прочти про потокобезопасность строк?
Вопрос ясен? Или надо опять снести несколько учи матчасть, ламери дома и пр? Мне не сложно, но на вопрос, выделенный жирным шрифтом, был бы рад получить более вразумительный ответ, тем более, что вопрос поставлен весьма конкретно.
> > _LStrSetLength?
> > LStrAsn
> Открой System.pas и изучай до полного просветления. Когда
> изучишь - сдай экзамен на форуме.
Так, я не понял - вы вообще читаете посты или как?
Я же сказал, что согласен с фактом потокобезопасности строк, на основе изучения имеено указанных функций. К чему реплика? У?
← →
Игорь Шевченко © (2004-09-10 10:43) [510]Суслик © (10.09.04 10:42) [509]
> Или вы пользуетесь недокументированными функциями?
Я пользуюсь головой. Чего и вам желаю.
LMD
← →
Суслик © (2004-09-10 10:53) [511]
> Игорь Шевченко © (10.09.04 10:43) [510]
> Я пользуюсь головой. Чего и вам желаю.
Не научтите? А?
Детский сад, извините...
Поясняю вопрос.
Есть определенная ТЕКУЩАЯ реализация, какой-нибудь операции. Вы спец в асме, и вы прсоматривая cpu выяснили что-то. Вы видите, что эта операция недокументированная.
Вот например, недавно у меня с АП был разговор насчет того, что запись StrRec (служебная информация о длинных строках) выглядит так
StrRec = packed record
refCnt: Longint;
length: Longint;
end;
а не такStrRec = packed record
Some: LongInt; // неиспользуемые 4 байта.
refCnt: Longint;
length: Longint;
end;
Анатолий говорил, что запись занимает 12 байт - я, что 8. Мы оба оказались правы - в д6 - 8 байт, в д5 (если не ошибаюсь) - 12. При этом эта особенность недокументирована в принципе. Если кто-то на нее бы заложился, то в будущей версии дельфи у него были бы проблемы.
Поэтому, не знаю как другие, но я, даже если знаю, не пользуюсь тем, что не указано в документации (желательно официальной). Неужто нелогично?
Также и со строками. Предположим, что они реализованы но НЕДОКУМЕНТИРОВАНЫ потокобезопасно для личных нужно самого борланда. В таком случае у него есть полное право сменить реализацию. Если же сей факт указан в доке, то сделать он этого не может.
Вот и жду, что кто-нибудь скажет про место в документации, где бы это было сказано.
> LMD
Сильно я тебя достал, чем только? :))
← →
GRAND25 © (2004-09-10 10:53) [512]У Игоря весьма неординарная голова. Какие там могут быть недокументированные функции? И рядом не валялись!
← →
Суслик © (2004-09-10 10:55) [513]
> GRAND25 © (10.09.04 10:53) [512]
> У Игоря весьма неординарная голова. Какие там могут быть
> недокументированные функции? И рядом не валялись!
Никто не спорит о его голове.
Вопрос то не в том, чтобы знать, а в том, чтобы использовать.
Я тоже знаю некоторые недокументированные фукнции. Но что мешает им перестать работать с следующей версии дельфи?
Или следующей версии не будет? :))
← →
GRAND25 © (2004-09-10 10:58) [514]
> Или следующей версии не будет? :))
Если и будет, то за поддержку этих недокументированных функций в том же виде и с тем же набором параметров никто ответственности не понесет.
← →
GRAND25 © (2004-09-10 11:01) [515]
> > LMD
>
> Сильно я тебя достал, чем только? :))
Ничем не достал. Просто все окружающие - ламеры по сравнению с такой неординарностью, как Игорь, по определению...
← →
Суслик © (2004-09-10 11:03) [516]
> GRAND25 © (10.09.04 10:58) [514]
> Если и будет, то за поддержку этих недокументированных функций
> в том же виде и с тем же набором параметров никто ответственности
> не понесет.
я про это и говорю.
Непользование недокументированными возможностями мое глубокое убеждение. Если оно ламерское убеждение - мне пофигу (честно).
← →
GRAND25 © (2004-09-10 11:06) [517]
> Если оно ламерское убеждение - мне пофигу (честно).
Любое убеждение, отличное от убеждений Игоря Шевченко - ламерское. Но и я с этим как-то живу...
← →
имя (2004-09-10 11:58) [518]Удалено модератором
← →
Суслик © (2004-09-10 12:02) [519]
> [518] Профи (10.09.04 11:58)
> И все у тебя будет хорошо.
У меня и так все хорошо
------------------------
Оправдай, кстати, свой ник - где в доке сказано про потокобезопасность строк?
← →
pasha_golub © (2004-09-10 12:34) [520]Суслик © (10.09.04 12:02) [519]
А может это само собой размуеющееся? Ну, вроде как строки базовый тип всегда был. Щас конечно реализация посложней, но все-таки.
Я вот никогда не задумывался, потокобезопасны ли строки. Всегда считал, что да.
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 1.6 MB
Время: 0.172 c