Forums » Community Projects
VO lua Thread API
Thread.Create(threadfunc, ...) -- returns threadhandle or nil,err
Thread.SendMessage(threadhandle, messageid, argumenttable) -- returns coroutine.resume error if any
Thread.WaitForSingleMessage(threadhandle, messageid) -- returns arguementtable
Thread.WaitForMultipleMessages(threadhandle, {messageid,messagename,messagename,...}) -- returns messageid, argumenttable
Thread.WaitForAnyMessage(threadhandle) -- returns messageid, argumenttable
Thread.PeekMessage(threadhandle, removemsg) -- returns nil if no message in mailbox or messageid, argumenttable and if removemsg is true, remove the message
Thread.WaitForCondition(cond) -- returns nothing
Thread.SignalCondition(cond) -- returns nothing
-- Basic samples of how to use these functions:
local SomeMessageID1 = "SomeMessageName"
local SomeMessageID2 = 10
function threadfunc(mythreadhandle, ...)
local threadarg1 = arg[1]
local threadarg2 = arg[2]
local msg,msgargs = Thread.WaitForMultipleMessages(mythreadhandle, {SomeMessageID1, SomeMessageID2})
if msg == SomeMessageID1 then
-- do stuff
elseif msg == SomeMessageID2 then
-- do other stuff
end
end
somethread = Thread.Create(threadfunc, threadarg1, threadarg2)
Thread.SendMessage(somethread, SomeMessageID1, "stuff")
-- Messages are queued in the thread's mailbox if the thread isn't waiting
-- for that particular message and the Wait functions will automatically
-- return if called to wait for a queued message.
Thread.SendMessage(threadhandle, messageid, argumenttable) -- returns coroutine.resume error if any
Thread.WaitForSingleMessage(threadhandle, messageid) -- returns arguementtable
Thread.WaitForMultipleMessages(threadhandle, {messageid,messagename,messagename,...}) -- returns messageid, argumenttable
Thread.WaitForAnyMessage(threadhandle) -- returns messageid, argumenttable
Thread.PeekMessage(threadhandle, removemsg) -- returns nil if no message in mailbox or messageid, argumenttable and if removemsg is true, remove the message
Thread.WaitForCondition(cond) -- returns nothing
Thread.SignalCondition(cond) -- returns nothing
-- Basic samples of how to use these functions:
local SomeMessageID1 = "SomeMessageName"
local SomeMessageID2 = 10
function threadfunc(mythreadhandle, ...)
local threadarg1 = arg[1]
local threadarg2 = arg[2]
local msg,msgargs = Thread.WaitForMultipleMessages(mythreadhandle, {SomeMessageID1, SomeMessageID2})
if msg == SomeMessageID1 then
-- do stuff
elseif msg == SomeMessageID2 then
-- do other stuff
end
end
somethread = Thread.Create(threadfunc, threadarg1, threadarg2)
Thread.SendMessage(somethread, SomeMessageID1, "stuff")
-- Messages are queued in the thread's mailbox if the thread isn't waiting
-- for that particular message and the Wait functions will automatically
-- return if called to wait for a queued message.