
Pavel
13.09.2018
17:04:01
Ну да, но он мне и нужен
Мне нужно получать только одну структуру и все
Даже если я возьму receive я разве смогу принимать иммутабельную структуру?

Igor
13.09.2018
17:21:47
Возможно нужно определить оператор присваивания. Похоже на нем валится

Google

Oleg
13.09.2018
18:08:30
там такая лажа во внутрянке, что жесть (была, когда в последний раз смотрел)
легче самому очередь сделать
тогда будет понятно что как и куда
всмысле лажа не прям дно, а типа для самых бытовых случаев код
когда нужно что-то накидать побыстрому и не париться

Ievgenii
13.09.2018
18:10:52
Единственное что, это а инхронно отправить сигнал другому потоку
А как передать данные - это уже второй вопрос

Oleg
13.09.2018
18:13:49
хотя та же лажа осталась и по сей день) получается что новый поток использует переменные из старого потока, которые при этом не shared
https://github.com/dlang/phobos/blob/master/std/concurrency.d#L525
но на простых вещах работает
при этом в Thread передаётся указатель на делегат, который вообще внутри другой функции объявлен

Igor
13.09.2018
18:26:23
ну конкретно с примером про иммутабельную структуру в том что для неё не работает присваивание
при помещении в очередь она должна скопироваться, да и при возвращении из receive тоже должна копироваться, то оно и обламывется.

Google

qwerty
13.09.2018
18:28:40
Есть такой системный вызов brk, который лежит в основе malloc. Он увеливает data segment приложения из пространства виртульной памяти, которое ОС выдало для процесса.
Это пространство фиксированное или динамически задаваемое?

Dark
13.09.2018
18:29:31

Igor
13.09.2018
18:29:31

qwerty
13.09.2018
18:29:48
вопрос о размере этого пространства

Igor
13.09.2018
18:29:56
у него есть лимит

qwerty
13.09.2018
18:30:14
4 gb для 32 bit и 8 для 64 ?

Igor
13.09.2018
18:30:21
если наступит на другой сегмент то будет ошибка нарушения защиты или что-то в этом роде

Dark
13.09.2018
18:30:49

Oleg
13.09.2018
18:30:57
>>> 2**32
4294967296
>>> 2**64
18446744073709551616
>>>
ну это так, для справки, к вопросу не относится

Igor
13.09.2018
18:32:40
зависит от сегментрованности адресного пространсва процесса. в линухе можно простомреть командой pmap

qwerty
13.09.2018
18:32:42
спасибо @deviator. Но у меня тогда другой вопрос. Если наступить на другой сегмент нельзя и пространство фиксированное, то как получается так, что процессов много. Ведь для каждого дают 4 гига

Dark
13.09.2018
18:33:01

Oleg
13.09.2018
18:33:13
а говорят что дают)
пока ты в память не запишешь ничего по настоящему не выделенно

Dark
13.09.2018
18:33:37
++

Oleg
13.09.2018
18:34:10
адресное пространство процесса это одно, объём оперативной памяти это другое

qwerty
13.09.2018
18:34:43
что?!!? Я думал, что адресное пространство map к реальному

Google

Oleg
13.09.2018
18:34:58
нет, уже давно не так
помимо этого это всё дело бъётся на страницы и может выгружаться из физической оперативы
даже память одного процесса

qwerty
13.09.2018
18:35:42
стоп

Oleg
13.09.2018
18:36:06
там несколько слоёв переадресаций полуается

qwerty
13.09.2018
18:36:46
ответ так просто не дать? Если мне надо что-то почитать, скажите что? Про то как формируется адресное пространство?

Oleg
13.09.2018
18:37:17
таненбаум "современные операционные системы"

qwerty
13.09.2018
18:37:30
вот блин >_<

Oleg
13.09.2018
18:37:42
но там всё ок рассказанно
но много читать

qwerty
13.09.2018
18:38:14
мне знакомый сказал сначала почитать michael kerrisk linux api, а потом "современные операционные системы"
а там как раз про brk рассказывается и меня понесло

Oleg
13.09.2018
18:39:05
я бы сначала таненбаума советовал бы
чтобы от основ к конкретным реализациям

qwerty
13.09.2018
18:39:40
ок! Всем большое спасибо!

Ievgenii
13.09.2018
18:44:30

Pavel
13.09.2018
19:00:09
Структура простая, символьные данные, по факту несколько string. И еще я туда засунул Tid чтобы плагин знал куда отправить ответ.

Oleg
13.09.2018
19:07:52

Pavel
13.09.2018
19:08:13
А я не знаю кто кому посылает. Там owner может быть вообще другой

Google

Oleg
13.09.2018
19:08:46
чтобы быть уверенным, что никто ничего не изменил?
так если это структура, то она копируется же в каждый поток

Pavel
13.09.2018
19:13:50

Oleg
13.09.2018
19:15:16
а внутри потоков ты их по ссылке передаёшь?
откуда у тебя страх, что там что-то изменится?

Pavel
13.09.2018
19:16:14
Ну, это неоднозначный вопрос, я же не знаю какие могут быть плагины. Они могут быть с очень сложной логикой, работать с событием по ссылке, по указателю, по копии, как угодно. Я не могу себе ничего гарантировать.

Igor
13.09.2018
19:16:52
ты можешь плагинам отдавать иммутабельную копию стркутуры

Oleg
13.09.2018
19:17:09
вот прям это и хотел написать

Pavel
13.09.2018
19:17:16
Это как отдавать?

Admin
ERROR: S client not available

Oleg
13.09.2018
19:17:39
интерфейс плагина просто должен принимать immutable(Foo)* например

Igor
13.09.2018
19:17:40
а как они её получают у тебя?

Oleg
13.09.2018
19:17:55
а не просто Foo

Pavel
13.09.2018
19:17:58

Oleg
13.09.2018
19:18:18
ну ты же ссылками и указателями хочешь передавать?

Pavel
13.09.2018
19:18:28
Нет я хочу передавать копией

Oleg
13.09.2018
19:18:29
иначе она просто скопируется
тогда вообще не понял проблемы

Pavel
13.09.2018
19:18:41
Так не хочет она копироваться, падает с ошибкой

Google

Igor
13.09.2018
19:18:48
immutable S s = a; - работает даже если а mutable

Oleg
13.09.2018
19:18:49
так...

Pavel
13.09.2018
19:19:06
Джва раза постил )
https://run.dlang.io/is/9o3ebQ вот такое вот супердно )
Вот такое не компилируется хотя ничего криминального в коде нет.

Dark
13.09.2018
19:19:43
Хм

Oleg
13.09.2018
19:19:54
Джва раза постил )
так мы тебе уже 2 раза говорим, что нужно убрать immutable из объявления структуры

Igor
13.09.2018
19:20:00
ты идешь поперёк реализации. и неизвестно есть ли реализация которая такое реализует

Dark
13.09.2018
19:20:00
Я чего то не понимаю
Зачем иммутабле, если все равно копируется?

Igor
13.09.2018
19:20:40

Pavel
13.09.2018
19:20:57

Oleg
13.09.2018
19:21:03

Igor
13.09.2018
19:21:26

Oleg
13.09.2018
19:21:32
логика то в чём?

Pavel
13.09.2018
19:21:54

Oleg
13.09.2018
19:22:06
чтобы изменённую не передали дальше?

Pavel
13.09.2018
19:22:09
Да

Oleg
13.09.2018
19:22:48
тоесть один плагин может инициализировать другой с уже изменённой структурой?
плагины вообще не ты пишешь, так?
там всё что угодно может произойти?