
maxx
21.06.2016
17:50:37
блииин... я ж как раз и говорю, что параллельности нет! =) она мнимая

Мерлин
21.06.2016
17:50:45
Есть просто переключение между контекстами

maxx
21.06.2016
17:50:51
имелся в виду один thread на уровне ОС, а не lua-вский

Google

Мерлин
21.06.2016
17:51:35

maxx
21.06.2016
17:52:25
"но если запрос на поиск слать из С-обвязки в другом потоке"
писал же уже
или "чукча не читатель"? =)

The Dude
21.06.2016
17:53:07
При чём тут си?

maxx
21.06.2016
17:53:47
ну, я не воспринимаю (пока) луа отдельно =)

Snusmumriken
21.06.2016
17:54:05
В корутинах есть некоторый смысл.

maxx
21.06.2016
17:54:06
для меня это эмбедед язык, работающий в связке.
конечно, это не верно.

The Dude
21.06.2016
17:56:29
"Традиционно, реализация делается вызовами callback'ов из цикла обработки событий. Асинхронность достигается за счет быстрой обработки одного события, разделяя поток на короткие итерации. Callback функции должны без задержек возвращать исполнение в цикл, который спит до появления новых событий."
Я идиот или что.
В чём разница, если у тебя корутина отработала ОЧЕНЬ БЫСТРО, но блокнув основной тред.

Snusmumriken
21.06.2016
17:56:55
Применение корутин.
https://www.lua.org/pil/9.4.html

The Dude
21.06.2016
17:57:08
От просто выполнения этого кода в основной треде?

Google

maxx
21.06.2016
17:57:26
она сработала очень быстро и передала это "очень быстро" другой корутине.
не воспринимай эту корутину как единственную
причём, передала - на полпути, не закончив свою задачу, а лишь прервавшись для получения новых данных например

Snusmumriken
21.06.2016
17:58:02
Карочи, корутины применяются для реактивного программирования и подобия функциональщины с ленивыми вычислениями, или для создания цепочек-корутин.
В некоторых случаях ускоряют процесс.

The Dude
21.06.2016
17:58:31
Но это СОВСЕМ не многозадачность и мультипоточность.
СОВСЕМ.

maxx
21.06.2016
17:58:43
ты про "вытесняющую многозадачность" читал? =)

The Dude
21.06.2016
17:58:50

maxx
21.06.2016
17:59:01
угу, вытесняющая многозадачность - это вообще не многозадачность

Snusmumriken
21.06.2016
17:59:07
Чувак, в питоне тоже нет тру-потоков.

Мерлин
21.06.2016
17:59:25

The Dude
21.06.2016
17:59:55

Snusmumriken
21.06.2016
18:00:02
Тру-потоки в луа достигаются модификацией хост-программы. В результате, ты посылаешь хосту код проги в виде строки, тот создаёт новый luastate и гоняет переданный код в другом тру-потоке.

The Dude
21.06.2016
18:00:13

Snusmumriken
21.06.2016
18:00:17
А то.

The Dude
21.06.2016
18:00:18
На уровне ВМ нельзя решить вопрос?

Snusmumriken
21.06.2016
18:00:24
Нет.

Мерлин
21.06.2016
18:00:35

The Dude
21.06.2016
18:00:37
Гы, определяем колиечтсов процов и хуячим кратко lua state :D

Snusmumriken
21.06.2016
18:00:41
В фреймворке который я использую, потоки именно такие.

Google

Мерлин
21.06.2016
18:01:53
В теории можно реализовать что-то типа труъ зелёных потоков как в Go
но это надо переписывать рантайм
Полностью
Хотя есть уже реализация на go
В принципе.....
У меня есть задумка
Хотя нет
Всё равно надо переписывать

maxx
21.06.2016
18:04:47

Мерлин
21.06.2016
18:07:54

The Dude
21.06.2016
18:09:01
Суть проста.
В вытесняющей - из вне тебе дают указание - умирай.
В корутинах ты сам решаешь когда умереть.
В общем Мерлин всё написаЛ)

Мерлин
21.06.2016
18:09:36
Если ты зделаешь в корутине вечный цикл без yield, то ты заблокируешь всю программу
Если ты запустишь цикл в среде с вытесняющей многозадачностью, то всё будет бежать асинхронно

maxx
21.06.2016
18:10:53
эээ... а я что написал? =)

Мерлин
21.06.2016
18:13:05
эээ... а я что написал? =)
Ты написал
"только прерывает исполнение не ОС, а сама сопрограмма"
то есть управление отдаёт корутина
Но это, блин, принципиальное отличие
В этом и состоит отличие вытесняющей многозадачности и кооперативной
:3

maxx
21.06.2016
18:15:53
нее... кооперативная - это много потоков, по задаче на поток, всё параллельно.
а вытесняющая - это один поток, разделяемый между разными задачами, от параллельности - только видимость, т.е. реальной параллельноси нет.

Мерлин
21.06.2016
18:19:25

maxx
21.06.2016
18:20:37
да не, без обид конечно, но я до сих пор не вижу, где б ты указал на противоречие :)
т.е. я вижу, что ты упёрся в термин и не можешь или не хочешь сделать одного шага в сторону :)

Мерлин
21.06.2016
18:22:30

maxx
21.06.2016
18:23:24
но ведь я ж именно так и написал: это КАК вытесняющая многозадачность, ТОЛЬКО прерывание идёт не от ОС, а от самой корутины. =)

Мерлин
21.06.2016
18:24:26

Google

maxx
21.06.2016
18:25:03
ну да. но ведь задачей стояло не дать формальное определение, а как-то по-другому показать смысл, чтоб The Dude разобрался

Мерлин
21.06.2016
18:25:21
нет, лучше так: смерть - это как жизнь, просто не дышишь и разлагаешься

maxx
21.06.2016
18:25:46
именно =)

Мерлин
21.06.2016
18:25:49
Впрочем он всё прекрасно понял и без нас
хехехе

maxx
21.06.2016
18:26:13
даёшь отправную точку поближе к конечной, а затем одним двумя штрихами указываешь правильный путь

[Anonymous]
21.06.2016
18:26:41

Мерлин
21.06.2016
18:26:55
Была статья, что то вроде "Пишем простую систему учёта" недавно
Там упоминался этот чатик

maxx
21.06.2016
18:27:13
была ещё другая статья на гиктаймсе. там тоже упоминался. вторая волна - оттуда

The Dude
21.06.2016
18:33:30
А скажите мне, могу я манкипатчить user data тип из хост-программы?

Мерлин
21.06.2016
18:37:44

The Dude
21.06.2016
18:38:12
А расширить в компиль тайме?

Мерлин
21.06.2016
18:38:54

The Dude
21.06.2016
18:39:24
?
Ну смотри, мне из хоста приходит таблица-объект player, к примеру, с методами player.move & player,kick
Я хочу к этому же объекту подвязать player.test
И завязать на метатаблички само собой
http://lualanes.github.io/lanes/

Snusmumriken
22.06.2016
01:19:22
Хм. Можно сделать класс-обёртку вокруг любой userdata.
Это проще всего. Я так с сишными структурами работал.
Ну там,
a = {}
a.obj = ffi.new(struct)
function a:iterator() bla-bla end
function a:getValue(...) end
И т.д, с метатаблицами и прочим.
Сишные методы, правда, приходится дублировать.
Кстати, с итераторами к многомерным массивам есть смешная история.
Вместо key высылается табличка типа {10, 20, 30}, которая определяет текущие положения по i, j, k, ... -измерениям, а вместо value - текущее значение. Это самое рациональное имхо.

Maxim
22.06.2016
02:38:42
Где чаты с java?

Google

Snusmumriken
22.06.2016
02:39:20
Может загуглишь?

Maxim
22.06.2016
02:39:35
На кой же вы мне тогда?

Snusmumriken
22.06.2016
02:39:58
Вот именно, зачем ты здесь? :3

Maxim
22.06.2016
02:40:09
В гости пришел.

Snusmumriken
22.06.2016
02:41:04
Молодец. А я, обычно, людей спрашиваю в тех случаях, когда пол часа гугленья не помогло. Не дергаю людей по пустякам. Это тактично.

Maxim
22.06.2016
02:41:20
Да, прикольно.
Так чем вы тут занимаетесь?

Snusmumriken
22.06.2016
02:42:07
Хернёй всякой. Можешь прочитать выше. Предыдущие сообщения доступны для всех желающих.

Maxim
22.06.2016
02:42:58
Хорошо.
Чем занимаешься? Кто ты?

Плюшка
22.06.2016
02:43:09

Snusmumriken
22.06.2016
02:44:37
Я делаю игрульки на чистой lua. Сетевой код, либы коллизий в 2d, физика, шейдеры, парсеры, либы для работы с UTF8, либы на сишке, которые можно подключить к lua (DLL/so), огромную кучу всякой херни.
Я - студент который вчера защитил диплом про ПО, написанное на lua, живу в Москве, неофициально работаю приходящим админом в паре офисов. Хобби - плотничество, гитарка/укулеле, изготовление ништяков из кожи.
Достаточно полная информация?

Maxim
22.06.2016
02:50:56
Вполне.

The Dude
22.06.2016
05:30:06

Snusmumriken
22.06.2016
06:12:40
Хм. Только сейчас, спустя три года кодинга, обнаружил, что я не могу сделать так:
t = {10, 20, 30}
for i, v in ipairs(t) do
v = 10
end,
Из-за того что v передается не как ссылка на значение, а как будто создается локальная переменная.
Всю дорогу работал с хешами/вложенными списки и тупо не замечал.
Срочно переделал итератор по ffi-структурам, чтобы тот вместо v-значения возвращал функцию, с помощью которой можно узнать текущее значение многомерного массива или задать текущее значение.
Со структурами проще. Не надо передавать конкретное значение, только ссылку на элемент структуры.

Oleg
22.06.2016
12:50:35
Ребят, никто не в курсе про подобные группки по python

Alexey
22.06.2016
12:50:50
в курсе.

Oleg
22.06.2016
12:51:01
Ooo

Alexey
22.06.2016
12:51:11
https://telegram.me/ru_python
https://telegram.me/python_beginners
https://telegram.me/rudepython