Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.186 c
14-1094736207
Igorek
2004-09-09 17:23
2004.10.03
Задача знатокам С++


1-1095454076
Heet
2004-09-18 00:47
2004.10.03
Как загрузить рисунок в FastReport во время выполнения?


4-1093008390
@lamer
2004-08-20 17:26
2004.10.03
Как получить системные настройки?


14-1095128166
КаПиБаРа
2004-09-14 06:16
2004.10.03
Вопрос по железу :)


1-1095161589
X9
2004-09-14 15:33
2004.10.03
Утечка памяти при использовании TForm





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский