Перейти к содержимому


Фотография

Многопоточность. Или как запустить несколько прог на один комп.

луа lua многопоточность мультипоточность программирование математика рулит остальные науки ничто

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 22 Июнь 2016 - 19:39

Всем добрый день.

 

Уже давно хотел предложить создание следующих крутых прог.

Я хочу предложить писать программы, представляющие из себя некоторую функцию, которая прописывается в event.listen() и завершается. Выходит что комп по сути свободен, а прога осталась в фоне. А в идеале она ещё закрепляется за другим монитором и клавиатурой освобождая основной монитор и клавиатуру.

 

Таким образом мы можем на первом (основном) мониторе дальше писать проги, или ещё что то запускать и параллельно с этим на втором мониторе у нас будет работать прога на эвентах.

Вот пример прог на эвентах, которые теоретически при небольших изменениях в коде способны запускаться параллельно с работой основного компа:

 

В чём суть?

 

Эти программы прописываются в эвентах и тупо занимают время компа бесконечным циклом с задержкой

Часть кода из проги для прослушки чата:

function start()
    term.clear()
    event.listen("chat_command",cmd)
    event.listen("chat_message",msg)
    while exit do
        os.sleep(3)                    -- просто прожигаем время в пустую, вместо того чтобы работать параллельно с компом.
    end
    event.ignore("chat_command",cmd)
    event.ignore("chat_message",msg)
end
start()

Как мы видим мы просто загрузили эвенты и ждём время когда игрок захочет их отрубить (причём отрубает он их с помощью тех же эвентов). То есть теоретически если не задавать цикл - можно параллельно запускать кучи прог, надо лишь распределить под каждую из них свой монитор и параллельный запуск обеспечен.

 

Что об этом думаете пишите в комментах.


Сообщение отредактировал qwertyMAN: 22 Июнь 2016 - 19:56


#2 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 213
  • Уровень сигнала: 13,71%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 22 Июнь 2016 - 19:45

Где многопоточность? Может я плохо вижу, к окулисту пора сходить? :blink:


  • Asummonster это нравится

#3 Оффлайн   Asummonster

Asummonster
  • Пользователи
  • Сообщений: 570
  • Уровень сигнала: 42,92%
  • В игре: 368 час. 28 мин.
  • ГородКиев

Награды

                    

Отправлено 22 Июнь 2016 - 19:45

Ты же понимаешь, что event.listen не создаёт новый поток?
OpenOSь всё время слушает ивенты, внутри /lib/event.lua есть специальная таблица listeners, каждый происходящий ивент она сравнивает со значениями в таблице, и запускает определённую функцию. Хочешь многопоточности - используй thread Зер0


  • newbie это нравится

#4 Оффлайн   qwertyMAN

qwertyMAN
  • Автор темы
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 22 Июнь 2016 - 19:45

Где многопоточность? Может я плохо вижу, к окулисту пора сходить? :blink:

Ну так эмуляция же. Я и не утверждаю что многопоточность есть. Зато неплохая альтернатива.


Сообщение отредактировал qwertyMAN: 22 Июнь 2016 - 19:46


#5 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 213
  • Уровень сигнала: 13,71%
  • В игре: 117 час. 41 мин.
  • ГородЛуна

Награды

                       

Отправлено 22 Июнь 2016 - 19:46

Ну так эмуляция же.

 

Эта "эмуляция" ни капли не похожа на многопоточность. :/



#6 Оффлайн   qwertyMAN

qwertyMAN
  • Автор темы
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 22 Июнь 2016 - 19:48

Добро пожаловать на форум:

Спойлер

 

Даже порекламировать свои проги нельзя, сразу тапком кинут.

 

Если ты это прочитал, значит ты читер.


Сообщение отредактировал qwertyMAN: 22 Июнь 2016 - 19:59

  • unknown это нравится

#7 Оффлайн   Asummonster

Asummonster
  • Пользователи
  • Сообщений: 570
  • Уровень сигнала: 42,92%
  • В игре: 368 час. 28 мин.
  • ГородКиев

Награды

                    

Отправлено 22 Июнь 2016 - 21:00

Просто назови это не многопоточностью, а "обработка событий в OpenOS"



#8 Оффлайн   Larban

Larban
  • Пользователи
  • Сообщений: 25
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Отправлено 12 Сентябрь 2016 - 20:41

ето скорее похоже на костыльную работу в фоне чем на многопоточность

 

многопоточность - одна программа делится на много кусков (например через coroutine)

многозадачность - много программ запущеных одновременно (например через process api)


Сообщение отредактировал Larban: 12 Сентябрь 2016 - 20:58


#9 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 780
  • Уровень сигнала: 4,24%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 12 Сентябрь 2016 - 21:45

ето ...

Это, а еще есть точки и запятые.


  • qwertyMAN и Kartze это нравится

#10 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 13 Сентябрь 2016 - 09:36

ето скорее похоже на костыльную работу в фоне чем на многопоточность

 

многопоточность - одна программа делится на много кусков (например через coroutine)

многозадачность - много программ запущеных одновременно (например через process api)

Так и есть, многопоточность для бедных :) Хотя даже и до такого титула не дотягивает. Ибо вызывает все функции по очереди из таблицы на полученный сигнал, так что если один заглохнет, умрёт всё.

 

Это, а еще есть точки и запятые.

Ты и сам-то не шибко грамотный, если честно. Главное, что не вырвиглазно писано.



#11 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 780
  • Уровень сигнала: 4,24%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 13 Сентябрь 2016 - 12:00

....

Ты и сам-то не шибко грамотный, если честно. Главное, что не вырвиглазно писано.

Мы здесь все коряво пишем, русский вообще не родной мне язык. Я еще хорошо пишу, а другие в моей местности, страх и ужас. сечас. :D


Сообщение отредактировал NEO: 13 Сентябрь 2016 - 12:05


#12 Оффлайн   ALeXeR

ALeXeR
  • Пользователи
  • Сообщений: 204
  • Уровень сигнала: 29,82%
  • В игре: 255 час. 59 мин.
  • ГородОдесса

Отправлено 15 Сентябрь 2016 - 09:18

если хочется многозадачность (термин высокоуровневый, по факту потоки), стоит изменять ось, ну а самая боль - в автоматических прерываниях. приходится слипы вручную ставить



#13 Оффлайн   TC1061

TC1061
  • Пользователи
  • Сообщений: 39
  • Уровень сигнала: 6,93%
  • В игре: 59 час. 28 мин.

Отправлено 07 Август 2017 - 18:30

Добро пожаловать на форум:

Спойлер

 

Даже порекламировать свои проги нельзя, сразу тапком кинут.

 

Если ты это прочитал, значит ты читер.

"Даже порекламировать свои проги нельзя, сразу тапком кинут.

 

 Если ты это прочитал, значит ты читер."

 

 

я это прочитал и я не читер







Темы с аналогичным тегами луа, lua, многопоточность, мультипоточность, программирование, математика, рулит, остальные, науки, ничто

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных