이eventLoop()
이 함수는 스레드에서 수신되는 이벤트를 듣기 위해 사용됩니다.
이eventLoop()
함수는 현재 스레드에 의해 수신된 이벤트 정보를 반환합니다. 참조이벤트 정보 구조.
객체, null 값
이벤트 루프 (eventLoop) 이벤트 루프 (타임아웃)
매개 변수timeout
이 매개 변수에서timeout
0으로 설정되면, 반환하기 전에 이벤트가 발생하기를 기다립니다. 0보다 크다면, 이벤트 대기 타임 아웃을 설정합니다. 0보다 작다면, 가장 최근의 이벤트를 즉시 반환합니다.
타임아웃 거짓 번호
function main() {
var t1 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop() // Blocking wait
// 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) // Return immediately
Log(_D(), "thread2 eventMsg:", eventMsg)
Sleep(5000)
}
})
var t3 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop(3000) // Set a 3 second timeout
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()
}
동시에 세 개의 스레드를 실행하고 수신된 이벤트 정보를 출력합니다. 타임 아웃이 발생하거나 함수가 즉시 반환되면 출력 값은 null입니다.
그 처리 메커니즘은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/Threads/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name},
이름 스레드 잠금