CáceventLoop()
chức năng được sử dụng để nghe các sự kiện được nhận bởi các chủ đề.
CáceventLoop()
hàm trả về thông tin sự kiện nhận được bởi các chủ đề hiện tại. XemCấu trúc thông tin sự kiện.
đối tượng, giá trị không
eventLoop (() eventLoop (thời gian hết)
Các thông sốtimeout
là thiết lập timeout trong milliseconds. Nếu tham sốtimeout
được thiết lập là 0, nó sẽ chờ cho một sự kiện xảy ra trước khi trả về. Nếu lớn hơn 0, nó sẽ thiết lập thời gian chờ sự kiện. Nếu nhỏ hơn 0, nó sẽ trả về sự kiện mới nhất ngay lập tức.
thời gian nghỉ sai số
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()
}
Chạy ba chủ đề đồng thời và xuất thông tin sự kiện nhận được. Nếu thời gian hết hoặc hàm trả về ngay lập tức, giá trị đầu ra là không.
Cơ chế xử lýeventLoop()
chức năng là giống như chức năng toàn cầuEventLoop()
.
{@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/Thread/name name name}
tên ThreadLock