logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

dnsjit.core.thread - POSIX thread with separate Lua state

Authors And Contributors

       Jerry Lundström (DNS-OARC), Tomáš Křížek (CZ.NIC), Petr Špaček (ISC)

       Maintained by DNS-OARC

              https://www.dns-oarc.net/

Bugs

       For issues and feature requests please use:

              https://github.com/DNS-OARC/dnsjit/issues

       For question and help please use:

              admin@dns-oarc.net

dnsjit                                                1.5.0                                dnsjit.core.thread(3)

Description

       Start  a  new  POSIX  thread  with  it's  own Lua state.  Sharable objects can be passed to the thread by
       pushing and poping them of the thread stack.  The Thread object and  any  other  objects  passed  to  the
       thread needs to be kept alive as long as the thread is running.

   FunctionsThread.new()
              Create a new Thread object.

       Thread:log()
              Return the Log object to control logging of this instance or module.

       Thread:start(func)
              Start  the  thread  and  execute the given function in a separate Lua state, first argument to the
              function will be the Thread object that created it.  Returns 0 on success.

       Thread:stop()
              Wait for the thread to return.  Returns 0 on success.

       Thread:push(...)
              Push string(s), number(s) or sharable object(s) onto the thread stack so  they  can  be  retrieved
              inside  the  thread  using  pop().   The  sharable object(s) needs to be kept alive as long as the
              thread is running, strings and numbers are copied.

       Thread:pop(num)
              Pop value(s) off the thread stack, should only be called within the thread.  If num is  not  given
              then one value is poped.  Returns nil if no values are left on the stack.

Name

       dnsjit.core.thread - POSIX thread with separate Lua state

See Also

dnsjit.core.channel(3)

Synopsis

         local thr = require("dnsjit.core.thread").new()
         thr:start(function(thr)
             print("Hello from thread")
             print("got:", thr:pop(), " = ", thr:pop(3))
         end)
         thr:push("value from main", 1, 2, 3)
         thr:stop()

See Also