
Maxim
13.06.2018
09:21:02
ну по факту, чтобы гарантировать стабильность и предсказуемость, нужно в этой ситуации оперировать только Си-подобными данными

Oleg
13.06.2018
09:26:02
ребят, вы чего? malloc ж никаким боком к gc не относится
и зачем там вообще выделять память в куче?

Google

Oleg
13.06.2018
09:29:27
и никаких malloc и new не надо будет

Ievgenii
13.06.2018
09:29:51

Oleg
13.06.2018
09:30:04

Ievgenii
13.06.2018
09:30:09
Это ev_loop

Oleg
13.06.2018
09:30:21
и что?

Ievgenii
13.06.2018
09:30:38
Он будет пытаться работать с твоими данными уже после выполнения твоей функции
А они удалятся
Вот в чем дело

Oleg
13.06.2018
09:30:59

Ievgenii
13.06.2018
09:31:08
?

Oleg
13.06.2018
09:31:40
выделить память на стеке функции вызывающей эту
а не в ней

Google

Oleg
13.06.2018
09:32:00
в худшем случае вообще в main

Ievgenii
13.06.2018
09:32:15
А на том этапе я не знаю сколько нужно
Это же обработка входных соединений
Пришло соединение, я принял его
Получил новый сокет
И мне нужна структура, уже на этом этапе
И структура будет асинхронно использовать через какое-то время

Oleg
13.06.2018
09:33:49
окей, тогда в чем проблема передать nogc аллокатор?

Ievgenii
13.06.2018
09:34:07
У меня не вышло)))
Вот в чем)

Oleg
13.06.2018
09:34:20
хммм

Ievgenii
13.06.2018
09:34:28
Пришлось делать new
Хотя я сам точно знаю когда мне удалять эту структуру
:(

Oleg
13.06.2018
09:34:55
если это "highload", то это плохой поход

Ievgenii
13.06.2018
09:35:06

Oleg
13.06.2018
09:35:23
так... стоп
это всё-таки по итогу не nogc код
в чём проблема с аллокатором?

Ievgenii
13.06.2018
09:36:21
Вот получение этой структуры я хотел сделать n9gc

Google

Ievgenii
13.06.2018
09:36:31
И именно это у меня не вышло

Oleg
13.06.2018
09:37:06
new в такой ситуации самый последний вариант

Ievgenii
13.06.2018
09:37:19
Так это пока тесты)))
MyIo, по имени уже понятно)))

Oleg
13.06.2018
09:37:55
если это циклически выполняемая операция, то это и скорость посадит и память будет есть много, если не ограничить

Ievgenii
13.06.2018
09:39:54
Объявить функцию nogc, в которой пытался сделать новую структуру

Oleg
13.06.2018
09:40:25
new понятное дело не пропустит

Ievgenii
13.06.2018
09:40:45
make
Из theAllocator
Кажется так

Ievgenii
13.06.2018
09:41:08
Я сейчас с телефона

Oleg
13.06.2018
09:41:19
так это ж gc аллокатор по дефолту

Ievgenii
13.06.2018
09:41:21
Митинг ?
Хм...

Oleg
13.06.2018
09:42:14
нужно было бы передать туда другой, а если абстрактный не получается, то конкретный попробовать
тоже сейчас с телефона

Ievgenii
13.06.2018
09:43:58
А какая разница между маллок и аллок?

Google

Oleg
13.06.2018
09:45:50

Ievgenii
13.06.2018
09:46:09
Аллок и маллок
В чем разница?
https://stackoverflow.com/questions/32685851/alloc-malloc-and-alloca-whats-the-difference

Oleg
13.06.2018
09:48:38
это пруф по поводу theAllocator https://dlang.org/phobos/std_experimental_allocator.html#theAllocator
Аллок и маллок
не помню, но к gc отношения не имеет, это gc имеет к malloc (или alloc)

Maxim
13.06.2018
09:50:21
ну, к сишной malloc GC никаким боком не прикручен)
на сто процентов ручное управление памятью

Oleg
13.06.2018
09:50:44
gc юзает malloc, при том, по всей видимости разный в rt и ct

Admin
ERROR: S client not available

Oleg
13.06.2018
09:51:45
в ct свой, а в rt почему бы и не сишный

Maxim
13.06.2018
09:52:09
не, ну ясен пень, что где-т внутри GC спрятано выделение памяти)
но не наоборот)

Oleg
13.06.2018
09:52:23
ну так я про это и говорю

Maxim
13.06.2018
09:53:27
ну так и до int 10h дойти можно)
у человека задача очевидная: таскать за вызовом user data, самый простой способ сделать это — это malloc)

Oleg
13.06.2018
09:55:04

Maxim
13.06.2018
09:55:23
а ему в любом случае тут ручной free нужен будет

Pavel
13.06.2018
09:55:53
Ну выше же писали, сделать malloc в main, дальше передавать указатель

Google

Maxim
13.06.2018
09:56:21
а стек-то сохранится?

qwerty
13.06.2018
09:56:27
есть способ проверить, что поле типа void function() не null? field !is null говорит true, но при вызове все равно segfault. Метод, на который ссылается поле пуст

Oleg
13.06.2018
09:56:43

Pavel
13.06.2018
09:56:47
А для объектов-соединений хранить эти структуры в freelist

Oleg
13.06.2018
09:57:13

Maxim
13.06.2018
09:57:31
короче, подведем итог: в идеале тут нужно использовать любой nogc аллокатор с ручным управлением памятью

Oleg
13.06.2018
09:58:37

qwerty
13.06.2018
09:59:10

Oleg
13.06.2018
09:59:55
просто func !is null это прям что доктор прописал в этой ситуации
ну всмысле покажи

qwerty
13.06.2018
10:01:07
хорошо, тогда подготовлю все перед показом, чтоб лишнее не отвлекало
а что делает static с методом
?
не с полем
а с отдельной функцией

Oleg
13.06.2018
10:01:43
возможно
static это просто функция, но внутри пространства имён и области видимости класса или структуры

qwerty
13.06.2018
10:02:47
ну вот добавив static, segfault нет. Но я не понимаю, что происходит

Oleg
13.06.2018
10:03:02
вот
короче это не так должно быть