Thread.eventLoop
监听当前线程(调用者所在线程)接收到的事件。
eventLoop()
eventLoop(timeout)示例
并发执行 3 个线程,输出接收到的事件信息;当超时或立即返回时,输出的是空值。
javascript
function main() {
var t1 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop() // 阻塞等待
Log(_D(), "thread1 eventMsg:", eventMsg)
// 输出:2024-11-14 10:14:18 thread1 eventMsg: {"Seq":1,"Event":"thread","ThreadId":0,"Index":1,"Queue":0,"Nano":1731550458699947000}
}
})
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()
}返回值
| 类型 | 描述 |
object / 空值 | 当前线程接收到的事件信息,详见 |
参数
| 名称 | 类型 | 必填 | 描述 |
timeout | number | 否 | 超时时间,单位为毫秒。若 |
参考
备注
eventLoop() 函数的处理机制与全局函数 EventLoop() 一致。监听的始终是调用者所在线程的事件,与通过哪个 Thread 对象调用无关,例如在主线程中调用 t1.eventLoop() 收到的是主线程的事件。