Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 1.61 MB
Время: 0.173 c
1-1095152652
Ricko
2004-09-14 13:04
2004.10.03
Unicode


14-1094843749
мимо идусчий
2004-09-10 23:15
2004.10.03
админы спят


9-1086760482
*John*1987*
2004-06-09 09:54
2004.10.03
Delphix для Delphi6


1-1095737501
hooch
2004-09-21 07:31
2004.10.03
Перенаправление событий мыши


1-1095341671
DSKalugin
2004-09-16 17:34
2004.10.03
CHR() for WideChar