Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Многопоточность Lua (), lib Lanes
yodich
сообщение 21.8.2023, 15:43
Сообщение #1


***

Novice
Сообщений: 90
Регистрация: 24.8.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.728
Возраст: 29



В общем думал как реализовать многопоточность (чтобы не путаться во вкладках со скриптами), нашел библиотеку. Вроде все хорошо, но для каких-то вычислений или отслеживания нажатий клавиш и тп, но для Пилота, а именно синтаксиса не подходит, эх.
Скину, может кому-то и поможет в чем-то =)

Примеры (из оф. источника):
http://lualanes.github.io/lanes/

Код

--lua
function print ( ... ) return log ( ... ) end print ("clear")

lanes = require "lanes".configure()

local function calculate(a, b, c)
  if not a then
    error "sample error; propagated to main lane when reading results"
  end
  return a + b + c
end

local h1= lanes.gen("base", calculate)(1,2,3)
local h2= lanes.gen("base", calculate)(10,20,30)
local h3= lanes.gen("base", calculate)(100,200,300)

print( h1[1], h2[1], h3[1] )

----------------------------------------------------------------------------------------------

--Тело первого потока
function test1()
  local ffi = require("ffi")
  ffi.cdef[[short GetAsyncKeyState(int vKey);]]

  function getkeystate(key)
    ffi.C.GetAsyncKeyState(key)
    while ffi.C.GetAsyncKeyState(key) == 0 do  end    -- ждать пока не нажата клавиша
    while ffi.C.GetAsyncKeyState(key) ~= 0 do  end    -- ждать пока клавиша нажата
  end
  getkeystate(32)  -- 32 - код клавиши пробел
  return "--> Первый поток"
end

--Тело второго потока
function test2(x)
  return x
end

print ("Нажми пробел")
--Запускаем первый поток
local a1 = lanes.gen( "*", test1 )()
--Запускаем второй поток
local a2 = lanes.gen( "*", test2 )("--> Второй поток")

print (a1[1], "||" , a2[1])



Может кто подскажет есть какие-то другие варианты?
Может кто-то с подобным "копался" )


Прикрепленные файлы
Прикрепленный файл  lib_lanes.zip ( 99,91 килобайт ) Кол-во скачиваний: 53
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.8.2023, 16:34
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.468
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27737
Пользователь №: 11.279



Зависимости не помню. Все luapower.com . Перекомпилено в 32 бита Cockney. Она работает. Но нужно понимать, что все новые потоки имеют собственный namespace, все require тоже нужно грузить поновой. Это несколько напрягает, когда приходится в каждый модуль грузить dbg либу.


Прикрепленные файлы
Прикрепленный файл  pthread.7z ( 128,64 килобайт ) Кол-во скачиваний: 56


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yodich
сообщение 21.8.2023, 16:41
Сообщение #3


***

Novice
Сообщений: 90
Регистрация: 24.8.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.728
Возраст: 29



Цитата(DarkMaster @ 21.8.2023, 18:34) *

Зависимости не помню. Все luapower.com . Перекомпилено в 32 бита Cockney. Она работает. Но нужно понимать, что все новые потоки имеют собственный namespace, все require тоже нужно грузить поновой. Это несколько напрягает, когда приходится в каждый модуль грузить dbg либу.


Благодарю!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.4.2024, 0:02
Designed by Nickostyle