169 похожих чатов

Рантайм dll где лежит, а основной програмы?

21 ответов

24 просмотра

что есть рантайм? менеджер памяти? менеджер памяти у DLL свой, у приложения - свой а я ещё хочу из той DLL - звать другую DLL ) вообще на Си/++ писанную, и у неё тоже будет внутри что-то своё, свой менеджер памяти

Boris-Usievich Автор вопроса
notme
что есть рантайм? менеджер памяти? менеджер памяти...

Рантайм это грубо говоря system в паскале. Разный менеджер памяти приведет к глюкам если выделить память в одном, а освободить в другом. Writeln должен быть потокобезопасным но если рантайм разный, то могут быть проблемы

Boris Usievich
Рантайм это грубо говоря system в паскале. Разный ...

Аха, память у меня изолирована между DLL и приложением, у каждого своя, обмена нету

Handatros
Память не изолирована но RTL разный

ну и пусть, RTL это же просто код, какие могут быть проблемы если у него свои данные и кроме него никто другой туда не полезет?

Alexander 👋
Кстати writeln не потокобезопасный.

Да, я тока что убедился в этом )

notme
Да, я тока что убедился в этом )

Матюгаться охота, других слов нет.

notme
Да, я тока что убедился в этом )

приложение падает, или просто возникает путаница в выводе сообщений?

Александр Бурмистров
приложение падает, или просто возникает путаница в...

Путаница и падение с ЕГГОГ 201 (но я уже не за компом, вроде 201)

notme
Путаница и падение с ЕГГОГ 201 (но я уже не за ком...

Хотя, стоит отметить, что я писал в файл, а не в консоль

notme
Хотя, стоит отметить, что я писал в файл, а не в к...

В консоль - вывод через WriteLn из множества потоков работает нормально (FPC 3.3.1, Windows 11) В файл - вывод через WriteLn из множества потоков работает нормально (FPC 3.3.1, Windows 11), только если синхронизировать вывод

notme
В консоль - вывод через WriteLn из множества поток...

fpc 3.2.2, windows 10 WriteLn не работает нормально

Aleksandr Zhuikov
fpc 3.2.2, windows 10 WriteLn не работает нормальн...

program project1; uses Classes, SysUtils; type TMyThread = class (TThread) oftype: byte; procedure Execute; override; end; var i: Integer; threads_arr: array [0..2] of TMyThread; //cs: TRTLCriticalSection; //f: TextFile; procedure WriteRnd(oftype: byte); begin //EnterCriticalSection(cs); //WriteLn(f, 'type: ', oftype, ' end;'); //LeaveCriticalSection(cs); WriteLn('type: ', oftype, ' end;'); end; procedure TMyThread.Execute; var t1: TDateTime; begin t1:=Now; while (Now-t1)*MSecsPerDay<2000 do WriteRnd(oftype); end; begin //AssignFile(f, 'threads_test.txt'); //Rewrite(f); //InitCriticalSection(cs); for i:=0 to 2 do begin threads_arr[i]:=TMyThread.Create(True); threads_arr[i].oftype:=i; end; for i:=0 to 2 do threads_arr[i].Start; for i:=0 to 2 do threads_arr[i].WaitFor; for i:=0 to 2 do threads_arr[i].Free; //DoneCriticalSection(cs); //Close(f); ReadLn; end. Я так тестировал

notme
program project1; uses Classes, SysUtils; type ...

Проверил и в 3,2,2 - тоже работает

notme
В консоль - вывод через WriteLn из множества поток...

Так много поточную запись в файл в любом случае надо синхронизировать. Не важно writeln или что

Михаил Усков
Так много поточную запись в файл в любом случае на...

ну в общем говоря - на уровне API Windows - нет поддержки многопоточного вывода в файл, по крайней мере в функции WriteFile

Aleksandr Zhuikov
fpc 3.2.2, windows 10 WriteLn не работает нормальн...

Ну теперь интересно - работает? Нашлась проблема? Или реально под Win10 так работает - отлично от Win11?

notme
program project1; uses Classes, SysUtils; type ...

Пример не приведу, при выводе из нескольких потоков без синхронизации периодически рвёт строку пополам. Но это ожидаемое поведение.

Aleksandr Zhuikov
Пример не приведу, при выводе из нескольких потоко...

А, ну хотя может, я то так... наколеночно протестировал

notme
А, ну хотя может, я то так... наколеночно протести...

Если хочется прямо правильно и не думать сильно - бери стандартную модельку producer-consumer, там очередь.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта