Июл 222014
Столкнулся с необходимостью реализовать многопоточное приложении на языке lua.
Встроенный механизм coroutine (кооперативной многозадачности) “естественно” не подошел.
После долгого гугления был найден кандидат – библиотека lualanes.
Основными доводами для ее использования стали:
- реальная многопточность
- простота использования
- кроссплатформенность.
Пример многопоточного приложения:
--Подключаем библиотеку LuaLanes
local lanes = require "lanes".configure()
--Подключаем библиотеку LuaSocket (для реализации паузы)
lanes.require("socket")
--Тело первого потока
function firstThread()
require("socket")
while true do
print("First thread")
socket.sleep(0.5)
end
end
--Тело второго потока
function secondThread()
require("socket")
while true do
print("Second thread")
socket.sleep(0.9)
end
end
--Запускаем первый поток
genFirstThread = lanes.gen( "*",firstThread )()
--Запускаем второй поток
genSecondThread = lanes.gen( "*",secondThread )()
--Уходим в бесконечный цикл
while true do
socket.sleep(1)
end
Больше примеров можно найти среди исходников библиотеки.
Для себя были собраны deb пакеты (проверены в debian и ubuntu).
И самое главное – библиотека собирается под OpenWRT. Тут можно взять Makefile (позже надеюсь войдет в upstream). А тут лежат собранные для OpenWRT пакеты (в том числе для CyberWRT).
UPD: На 1.08.2014 пакет включен в репозиторий CyberWRT и добавлен в trunk OpenWRT.
Добрый день! Подскажите пожалуйста, как прикрутить lualines к LUA Development Tools?
Здравствуйте.
Сам не пользовался этой средой, но думаю к среде разработки библиотеки не должны привязываться.
Есть способ установки с помощью luarock (описано на оф сайте). После установки, библиотека должна быть доступна. В линуксе я устанавливал собранным deb пакетом.
“Есть способ установки с помощью luarock…” – ничего не получилось… И ОС у меня Windows 7, да и Visual studio тоже нет… Я так и не понял как установить lualanes с помощью luarock…((( Не то чтобы я тупой, просто я не являюсь профессиональным программистом, поэтому эти пакеты для сборки для меня тёмный лес. Я так понимаю, на выходе у меня должно получиться 2 файла: core.dll и lualanes.lua Потом их надо разложить в правильные места и из под LUA Development Tools обращаться к этой библиотеке. А у Вас случайно нет готовых библиотек из пакета lualanes?
Извините за долгое молчание. Пропустил оповещение о новом комментарии…