eventLoop

eventLoop()函数用于监听线程接收到的事件。

eventLoop()函数返回当前线程接收到的事件信息,详见事件信息结构。 object / 空值

eventLoop() eventLoop(timeout)

参数timeout为超时设置,单位为毫秒。参数timeout如果设置为0则阻塞等待直到有事件发生才返回;如果大于0则设置事件等待超时时间;如果小于0则立即返回最近的事件。 timeout false number

”`javascript function main() { var t1 = threading.Thread(function() { while (true) { var eventMsg = threading.currentThread().eventLoop() // 阻塞等待 // 2024-11-14 10:14:18 thread1 eventMsg: {“Seq”:1,“Event”:“thread”,“ThreadId”:0,“Index”:1,“Queue”:0,“Nano”:1731550458699947000} Log(_D(), “thread1 eventMsg:”, eventMsg) } })

var t2 = threading.Thread(function() {
    while (true) {
        var eventMsg = threading.currentThread().eventLoop(-1)   // 立即返回
        Log(_D(), "thread2 eventMsg:", eventMsg)
        Sleep(5000)
    }
})

var t3 = threading.Thread(function() {
    while (true) {
        var eventMsg = threading.currentThread().eventLoop(3000) // 设置3秒超时
        Log(_D(), "thread3 eventMsg:", eventMsg)
    }
})

t1.postMessage("Hello ", t1.name())
t2.postMessage("Hello ", t2.name())
t3.postMessage("Hello ", t3.name())
t1.join()
t2.join()
t3.join()

}“` 并发执行3个线程,输出接收到的事件信息。超时或立即返回时输出空值。

eventLoop()函数的处理机制与全局函数EventLoop()一致。

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}