Как интегрировать исходный код для выполнения в поток?

Допустим есть поток.

coroutine.wrap(function()
   -- поток
   load("внутренний код объекта которыц тоже нужно выполнить в потоке.")()
end)()


include function: 0x2ba78398
__PathsToClientFS       table: 0x32321158
AddCSMoonFile nil [/] addons/glua-stock/moon/modules/functions/z-manifest.moon steamfilter : nil
vklucheniye     unified/manifest.moon
AddCSMoonFile nil [/] addons/glua-stock/moon/modules/functions/unified/manifest.moon steamfilter : nil
vklucheniye     functions.moon
¤ 0.2959079/28.8748875 Функции/ФункцияСвязыванияМодулей.moon
AddCSMoonFile nil [/] addons/glua-stock/moon/modules/functions/unified/functions.moon steamfilter : nil
vklucheniye     gmod/layer.moon
AddCSMoonFile nil [/] addons/glua-stock/moon/modules/functions/unified/gmod/layer.moon steamfilter : nil
включение Классы/enum.moon <-> addons/glua-stock/moon/modules/functions/unified/gmod/Классы/enum.moon (addons/glua-stock/moon/modules/functions/unified/gmod)
Ошибка включения        Пред Загрузчик Ядра.moon:30: attempt to yield across C-call boundary

[glua-stock] Система Включений.moon:30: Пред Загрузчик Ядра.moon:30: attempt to yield across C-call boundary
  1. Try - [C]:-1
   2. include - Система Включений.moon:30
    3. unknown - addons/glua-stock/moon/modules/functions/unified/gmod/layer.moon:9
     4. include - [C]:-1
      5. unknown - addons/glua-stock/moon/modules/functions/unified/manifest.moon:7
       6. include - [C]:-1
        7. unknown - addons/glua-stock/moon/modules/functions/z-manifest.moon:9
         8. include - [C]:-1
          9. unknown - addons/glua-stock/moon/modules/z-manifest.moon:3
           10. include - [C]:-1
            11. unknown - addons/glua-stock/moon/autorun/server/shared.moon:3


http.syncronous_get = (url) ->
    --print "POLUCHIT: " .. url
    data = nil
    http.get url, (_data) -> data = _data
    while data == nil
        coroutine.yield! -- возникает отсюда. после RunString в потоке.
    return data
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
Pauk_Code
@Pauk_Code Автор вопроса
wait_for_thread_wrap_done CompileString([[
module('glua-stock', package.seeall)
return coroutine.wrap(function() ]] .. kontent .. [[ end)
]], path)()


export wait_for_thread_wrap_done = (potok) ->
    while true
        statys, msg = pcall potok
        unless statys
            if msg == "cannot resume dead coroutine"
                break 
            else
                error msg
        else
            coroutine.yield!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы