@dlangru

Страница 281 из 719
Oleg
08.10.2017
17:41:06
типа такой конструкции

и если это класс, конечно

qwerty
08.10.2017
17:41:32
Спасибо!

У нас случайно нет реализации протокола fast cgi?

Google
Oleg
08.10.2017
17:45:28
https://code.dlang.org/packages/fcgi-loop

хз, 2015

возможно это важно

https://code.dlang.org/packages/cgi_d более свежий, но, видимо без fast cgi

Dmitry
08.10.2017
18:40:59
http://arsdnet.net/web.d/cgi.d.html тут вроде есть

Dmitry
08.10.2017
19:04:06
А где хранятся глобальные переменные разные? Это от языка зависит?

Dmitry
08.10.2017
19:07:52
Зависит, конечно. У C/C++/D есть например "сегмент данных" под это дело. Но в Ди это лишь для __gshared, просто "глобальные" у него ж thread-local.

Dmitry
08.10.2017
19:11:37
А вот так мы получается что сделаем. int в куче расположим? int* p = new int;

Andrey
08.10.2017
19:15:44
да

Dmitry
08.10.2017
19:16:09
а какой реальный юзер-кейс у этого случая?

Dmitry
08.10.2017
19:18:28
никакой

Pavel
08.10.2017
19:23:49
Я когда мысленно представляю как эти программы выделяют память десятками вызовов, представляю какой там ад творится с фрагментацией, как только оптимизатор все это перемалывает..

Dmitry
09.10.2017
03:05:04
Никак, оптимизатор в выделение памяти не смеет вмешиваться обычно, т.к. это было бы изменением результатов выполнения...

Google
Dmitry
09.10.2017
07:42:18
А стек файбера это иначе называется "стек фрейм"?

Andrey
09.10.2017
07:58:18
вообще стэк-фрейм это фрагмент стека, сожержащий адрес возврата, аргументы и локальные данные функции. Вот кстати, в сорцах core.thread неплохие каменты по файберам https://github.com/dlang/druntime/blob/master/src/core/thread.d#L3827

Dmitry
09.10.2017
08:07:28
да комменты реально хорошие

А квант времени как рассчитывается при переключении между приложениями. В приложении же может быть 100 потоков, а может быть один? Получается если в приложении сто потоков то квант выделенный на весь процесс делится на 100 ? Чnобы каждый поток успел поработать?

Maxim
09.10.2017
09:01:32
подозреваю, это очень сильно зависит от операционной системы и ее планировщика

http://www.cyberguru.ru/win32/windows-processes-page2.html тут вот в общем и целом описано, как это работает в семействе winNT

Dmitry
09.10.2017
11:46:25
@deviator в питоне все же потоки поверх системных, но все остальное там сбоку прикручено

Oleg
09.10.2017
11:58:03
@deviator в питоне все же потоки поверх системных, но все остальное там сбоку прикручено
Йа ни эксперт) насколько я помню там вся реальная многопоточность реализована через запуск новых инстансов интерпретатора. А файберы там как файберы (по всей видимости 'почти', ибо без понятия оперирует ли пользовательский код регистрами напрямую под капотом, но думаю нет)

Dmitry
09.10.2017
12:00:27
там есть многопоточность на системных потоках и многопроцессорность где каждая функция может работать как отдельный процесс

В Ди по идее тоже самое, только у питоне с потоками какая-то херь с GIL типа потоки могут тормозить из-за доступа к разделяемым данным.

Oleg
09.10.2017
12:02:39
А что значит тогда 'сбоку'?

Dmitry
09.10.2017
12:03:39
большинство структур данных (списки, словари и т.д.), которые находятся в глобальном пространстве интерпретатора, не потоко-безопасны. Поэтому придумали костыль в виде GIL

Oleg
09.10.2017
12:05:37
Интересно

А в каком языке они потокобезопасны?

Везде нужны блокировки

GIL из-за того что сложно определить к чему нужно доступ защищать

Типа всё тормознул и всё

Вообще чистый питон не для таких задач

Dmitry
09.10.2017
12:08:21
В Ди же много данных immutable т.е. их не попортить

Oleg
09.10.2017
12:08:35
А либы все серьезные имеют в основе С

Google
Oleg
09.10.2017
12:08:46
Pavel
09.10.2017
12:09:15
А в каком языке они потокобезопасны?
Возможно в Pony они безопасноы ?

Oleg
09.10.2017
12:09:55
Ну мы же о нормальных языках)

Dmitry
09.10.2017
12:10:36
Но в Ди разве есть GIL ? Или я тогда что-то не понимаю. Почему в Питоне есть проблема, а в Ди нет

Dmitry
09.10.2017
12:15:46
а как это связано с потоками?

По сути проблема то остается

Oleg
09.10.2017
12:16:32
По сути проблема то остается
Ну смысл в том, что gil прост и удобен

А d нужна скорость, как и всем компилируемый языкам

Какой смысл в чём-то подобном там?

qwerty
09.10.2017
12:19:12
а как это связано с потоками?
дело в том, что в интерпретаторе много глобальных объектов, которые используются в интерпретируемом коде, и делать их копии пока что большая проблема. Дело совсем не контейнерах, дело вообще в низкоуровневынх объектах

Dmitry
09.10.2017
12:19:57
к примеру каких объетов?

qwerty
09.10.2017
12:20:17
может про D поговорим?

зайдите в Python чат и там спросите

Maxim
09.10.2017
12:20:34
gil — это когда в многопроцессорных системах принудительно блокирует потоки, чтобы в единицу времени исполнялся только один?

qwerty
09.10.2017
12:30:38
libasync проблемный или vibe.d?

Google
qwerty
09.10.2017
12:35:24
Я просто взялся с товарищем за реализацию fcgi. И для тестов пришлось еще сервер создать. И я подумал, что может уже есть наработки для создания сервера.

Pavel
09.10.2017
12:36:32
в либасинке мне так и не удалось настроить работающий ThreadPool с переиспользованием входящего сокета.

Но в целом он работает.

С другой стороны, мне кажется vibe.d:core это уже стандарт де-факто для всех библиотек, если какая-то библиотека хочет поддерживать асинхронный режим работы, то она должна делать это на основе vibe.d

Maxim
09.10.2017
12:38:56
и это плохо)

Pavel
09.10.2017
12:39:12
Ну а щито поделать

Maxim
09.10.2017
12:39:33
брать волю в кулак и пилить альтернативу)

Pavel
09.10.2017
12:39:47
Это только усилит страдания и раскол в рядах.

Maxim
09.10.2017
12:40:04
благо, это не фронтэнд, в котором при всем желании не избавиться от js)

Admin
ERROR: S client not available

Pavel
09.10.2017
12:40:20
Единого стандарта/интерфейса асинхронной архитектуры нету, это значит что каждый ее переизобретает снова и снова. И библиоткеи друг с другом несовместимы.

Maxim
09.10.2017
12:41:24
vibe слишком комбайн, и как мне кажется, он становится заложником своей архитектуры

Pavel
09.10.2017
12:41:51
Да, есть асинхронное ядро которое содержит в себе минимум функций и сейчас его выделили в отдельный пакет.

Как раз чтобы была единая минималистичная библиотека. Ее даже стараются писать без GC

qwerty
09.10.2017
12:42:21
Это ядро не комбайн?)

Maxim
09.10.2017
12:43:00
ну вроде как да)

Pavel
09.10.2017
12:43:08
Ну там же как бы есть куча других пакетов - работа с json, http, weforms, mongodb, templates и т.д. Но это все в ядро не входит.

Maxim
09.10.2017
12:43:10
но там все сложно)

Pavel
09.10.2017
12:43:21
Ядро это только event loop + асинхронные стримы

Google
Pavel
09.10.2017
12:43:50
Ну и всякие другие минимальные примитивы для асинхронной работы чего бы то ни было.

Maxim
09.10.2017
12:47:19
наверное, даже это вот можно попробовать использовать https://github.com/vibe-d/vibe-core

Pavel
09.10.2017
12:48:23
Да

Maxim
09.10.2017
12:48:57
не, есть vibe.d:core, а есть vibe-core — дальнейшее развитие идеи)

Pavel
09.10.2017
12:49:16
Хм я думал это одно и то же

Maxim
09.10.2017
12:50:12
This is the designated successor of the vibe-d:core sub package of vibe.d 0.7.x. The API is mostly compatible from a library user point of view, but the whole library has received some heavy lifting under the surface, close to a rewrite.

Pavel
09.10.2017
12:50:18
Но в общем да, видишь тут еще заявлена поддержка файберов, что важно. У libasync нету файберов.

qwerty
09.10.2017
12:51:23
Я скажу прямо, что меня интересует backend. И я вижу, что все пытаются сделать сервера сразу. Я думаю, что проблему можно решить поэтапно. Сделать реализацию fcgi, сделать менеджер процессов (вроде php-fpm). Потом можно делать веб фреймворк (только не в духе Django, когда все в одном), а в духе symfony или flask (когда несколько компонентов)

Maxim
09.10.2017
12:51:59
начать можно даже с scgi)

qwerty
09.10.2017
12:53:28
Поэтому поэтапно и покусочно

Pavel
09.10.2017
12:53:40
Если каждый будет мейнтейнить по 2-3 небольших пакета, будет здорово

Maxim
09.10.2017
12:53:58
думаю, такое осилит только группа разработчиков, чьей основной работой будет пилить веб бэкенд на ди

иначе все это порастет сорняками и умрет

qwerty
09.10.2017
12:54:36
До бэкенда еще далеко, сначала либа и менеджер

Я посмотрел на perl менеджер, там около 10к строк кода

Maxim
09.10.2017
12:55:22
под бэкэндом я имею в виду, что-то, отдающее в конечном итоге данные по http

это может быть и fcgi, и scgi, и даже просто cgi для знающих ток в извращениях, или даже модуль для nginx или apache, или, о боги, целый сервер)

но главное, чтобы разработчики использовали это он э дэйли базис, иф о ноу, вот ай мин)

иначе бытовуха затянет, и все начинания затухнут

Страница 281 из 719