
Assasin
21.05.2018
21:26:23
язык разве гарантирует синхронизацию на доступе к статическому объекту функции?

Constantine
21.05.2018
21:26:48
он гарантирует только синхронизацию создания

Assasin
21.05.2018
21:26:54
а, речь об инициализации

Constantine
21.05.2018
21:27:03
это же по сути и есть синглтон

Google

Assasin
21.05.2018
21:27:40
ну вернее можно, наверное, исхитриться и передать всякими decltype от функции, но это уже извращение какое-то

Constantine
21.05.2018
21:29:41
нет, не нужно
потому что это функция в CPP файле и последнее невозможно
анонимный неймспейс вообще нельзя писать в .h-нике

Assasin
21.05.2018
21:30:43
речь о других файлах, где нужно передать синглтон в качестве параметра
void doAcion(<Singleton?> &obj);

Constantine
21.05.2018
21:31:06
хм... зачем нужно синглтон передавать как параметр?

Assasin
21.05.2018
21:31:29
чтобы работал полиморфизм

Constantine
21.05.2018
21:31:32
синглтоны выражают глобальные ресурсы же
их запрашивают как глобальные ресурсы
если можно передавать параметр, то и синглтон не нужен

Assasin
21.05.2018
21:32:17
например, базовый конфиг-синглтон и переопределенный конфиг, скажем, для тестов

Google

Constantine
21.05.2018
21:32:31
угу, система с депенденси инжекшн

Assasin
21.05.2018
21:32:52
да

Constantine
21.05.2018
21:32:55
в данном случае источник синглтона - глобальный ресурс
одна лишняя косвенность, там shared_ptr лежит
и метод guard_object tests::register_injection()

Assasin
21.05.2018
21:34:33
короче, рассуждать можно долго, да спать пора)
приятно было поговорить, спокойной ночи

Constantine
21.05.2018
21:34:52
ну я пока не рассуждаю, просто рассказываю, как это написано :)

Assasin
21.05.2018
21:35:09
спасибо, я реализовывал свой простой DI)

Constantine
21.05.2018
21:35:16
там еще куча шаманской магии типа this_thread_register_injection и this_thread_register_isolation

Assasin
21.05.2018
21:35:31
правда не на плюсах, да
стоит заняться как-нибудь

Constantine
21.05.2018
21:35:47
где последнее проваливает нафиг тест в случае, если идет попытка обратиться к чему-то плохому

Al
22.05.2018
00:27:04

Zaur
22.05.2018
00:43:45
Я думаю граф ненаправленный


Al
22.05.2018
00:45:04
Без разницы. Тогда удаление основания ветки приведет к созданию 2 полностью независимых графов
вы не сможете сделать это на shared/weak ptr
Так как вы это обьясняете конечно не сможет. Но если касаться графов то изначально нужно понимать что граф это инструмент для описания множества множеств и отношений между этими множествами.
То есть если вы хотите создать какой то инструмент который будет производить определенную работу при наличии конечного списка условий. То с точки зрения графа. У вас будет множество описаное одной вершиной (работа) и набор связаных вершин (условий), каждое из которых является множеством само по себе. Ничто не мешает вам реализовать простой алгоритм. Когда при каких то внешних событиях будет отрабатываться множество и результатом будет работа, например какая то глобальная переменная изменит свое значение. А если множество сделало изменение то оно может вызвать любое количество вышестоящих множеств и те в свою очередь проверив например связаный список глобальных переменных либо сделают какую работу либо ничего не произойдет.
Никаких циклов.
Подходя ближе к задаче. Организовать убийство связаных процессов не проблема. Достаточно просто помнить процессы и как они связаны. А то дерево это очень частный случай графа
И может получиться не приятно когда рубанув по листику завалишь всю систему


Alex
22.05.2018
01:27:09
здесь могла быть ваша реклама...

Google

Al
22.05.2018
01:36:30
Система которая превратит кучу ваших данных в связанные множества и вы обнаружите ранее не очевидные связи и зависимости. :)
Как Палантир только полностью автоматический и гораздо дешевле.

D A
22.05.2018
03:55:13
Ребятааа
Ищу криптор
Продукт на сях написан, но нужен крипт ?
Доброе утро/между тем

Constantine
22.05.2018
04:37:26


Al
22.05.2018
04:51:17
Это все конечно хорошо, как реализовывать конечный автомат будем?
Так и будем. Расматриваем каждую функцию как множество. Функция проверяет переменные которые получает от функций ниже или внешнего мира. И согласно условий изменяет или нет переменную на выходе. Изменение переменной на выходе вызывает вышестоящую функцию и так пока не доберется до действия. А запускать цепочку можно по прерыванию от внешнего события.

Constantine
22.05.2018
04:52:40

Al
22.05.2018
04:54:04

Constantine
22.05.2018
04:54:26
Я не очень большой специалист по яве
Не знаю, что там называется вложением

Constantine
22.05.2018
04:55:02
Но прототип выше это буквальное мое понимание, как это должно быть описано
(изначально дискуссия была, почему shared_ptr / weak_ptr не описывают структуру владения)
А то пока получается смешная ситуация вроде "как перевести intmax_t в wstring локаленезависимым образом в С++14?"
Много что можно использовать, но пример набросать... :)
И главное, детским недостатком языка это никто так и не признал

Aidar
22.05.2018
05:02:17
Но сами окна типа перемещаемые
Короче интерфейс нормальный а кишки упороты

Google

Constantine
22.05.2018
05:02:58
Я упорюсь пимплы писать
Главное, зачем?)

Aidar
22.05.2018
05:03:23

Constantine
22.05.2018
05:04:05
Ты же понимаешь, что пимпл это два раза весь контракт окна описать?

Aidar
22.05.2018
05:04:13
А не как в кьюте
Ну второй может быть уже

Constantine
22.05.2018
05:04:50
Ну... это * константа времени разработки непонятно зачем

Admin
ERROR: S client not available

Constantine
22.05.2018
05:05:07
За такое на эту константу зарплату делят)

Aidar
22.05.2018
05:05:19
Я так понял у тебя щас архитектура дико похожа на кьют

Constantine
22.05.2018
05:05:29
Наверняка

Aidar
22.05.2018
05:05:34
А меня от него подташнивает

Constantine
22.05.2018
05:05:44
Кроме того, что вместо сигнал-слотов используется реактивное вычисление

Aidar
22.05.2018
05:05:47
Просто потомучто это джава ебаная
На виртуальном полиморфизме

Constantine
22.05.2018
05:06:19
Ну сделай мне модули компиляции
У меня сейчас 44 минуты сборка

Aidar
22.05.2018
05:06:34
С неперемещабельными окнами и ссылками на родителя
И COW со всех щелей

Google

Constantine
22.05.2018
05:06:50
Ссылки на родителей и COW нет
Там чуть сложнее
Вместо ссылки на родителя
Она скрыта в реактивной модели
предок просто обожает выдавать потомку значение, валидное исключительно в диапазоне Create..Destroy
в норме потомок не собирается напрямую обращаться к предку, разумеется

Al
22.05.2018
05:14:56
Оказывается есть такая утилитка уже

Constantine
22.05.2018
05:26:41
Зачем мне std::optional?

Al
22.05.2018
05:29:56
Зачем мне std::optional?
Ну так ты хотел же чего то там описывать. Ну вот и описывай в одном так сказать флаконе. Как флакон наполнится так делай чего там нужно. Оно ж для этого и сделано.

Constantine
22.05.2018
05:30:18

Al
22.05.2018
05:31:41

Constantine
22.05.2018
05:32:08

Al
22.05.2018
05:39:55

Constantine
22.05.2018
05:40:59

Al
22.05.2018
05:45:43
Ты хочешь составить список зависимостей процессов. что бы прибивать автоматом дочернии процессы? Причем тут конечный автомат и графы и прочая хрень?

Constantine
22.05.2018
05:49:56

Al
22.05.2018
05:50:21
Пиши их в список друг за другом. Потому что это не дерево. Это векторы. И прибивай каждый вектор согласно списка.