@ProLua

Страница 27 из 307
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
"но если запрос на поиск слать из С-обвязки в другом потоке" писал же уже

или "чукча не читатель"? =)

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
ты про "вытесняющую многозадачность" читал? =)

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

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

Мерлин
21.06.2016
17:59:25
В чём разница, если у тебя корутина отработала ОЧЕНЬ БЫСТРО, но блокнув основной тред.
Мы запустили внешний процесс - > отдаём время для другиъ корутин -> просыпаемся, проверяем результат

угу, вытесняющая многозадачность - это вообще не многозадачность
Это нее имеет отношения к втыесняющей многозадачности Ваапще

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

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
если ещё раз прочитать моё замечание "только прерывает исполнение не ОС, а сама сопрограмма", то не вижу, в чём разница =)
Разница в том, что в луа ни рантайм ни "родитель" не может прервать выполнение корутины. Он может только ждать, пока она отдаст управление породившеё задаче с помощью yield Если ты в среде с вытесняющей многозадачностью, то текущая задача может быть прервана в любой момент и выполнение продолжится в другой точке

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
нее... кооперативная - это много потоков, по задаче на поток, всё параллельно. а вытесняющая - это один поток, разделяемый между разными задачами, от параллельности - только видимость, т.е. реальной параллельноси нет.

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
даёшь отправную точку поближе к конечной, а затем одним двумя штрихами указываешь правильный путь

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

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

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

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

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
Вполне.

@jvmchat
Пасиба.

The Dude
22.06.2016
05:30:06
Пасиба.
@javarush

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

Страница 27 из 307