Июл 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?
Извините за долгое молчание. Пропустил оповещение о новом комментарии…