Nếu điều này là dành cho nút, thì một chuỗi màn hình đơn giản sẽ làm gì? Tôi không biết một cách để có được thông tin về internals hàng đợi sự kiện, nhưng bạn có thể tiêm một dấu vết vào hàng đợi sự kiện để theo dõi các chủ đề đang được chạy một cách kịp thời. (Các biện pháp này không phải do số lượng các chủ đề chưa được chạy, nhưng theo các chủ đề đang chạy đúng thời hạn. Điều tương tự, loại.)
Chủ đề màn hình có thể tự xếp hàng lại và kiểm tra xem nó có được gọi hay không ít nhất mỗi 10 mili giây (hoặc bất kỳ ms chặn tích lũy tối đa nào được phép). Kể từ khi nodej chạy thread round-robin, nếu thread màn hình được chạy đúng thời gian, nó cho chúng ta biết rằng tất cả các luồng khác có cơ hội chạy trong cùng một cửa sổ 10 ms đó. Một cái gì đó giống như (trong nút):
// like Date.now(), but with higher precision
// the extra precision is needed to be able to track small delays
function dateNow() {
var t = process.hrtime();
return (t[0] + t[1] * 1e-9) * 1000;
}
var _lastTimestamp = dateNow(); // when healthMonitor ran last, in ms
var _maxAllowedDelay = 10.0; // max ms delay we allow for our task to run
function healthMonitor() {
var now = dateNow();
var delay = now - _lastTimestamp;
if (delaly > _maxAllowedDelay) {
console.log("healthMonitor was late:", delay, " > ", _maxAllowedDelay);
}
_lastTimestamp = now;
setTimeout(healthMonitor, 1);
}
// launch the health monitor and run it forever
// note: the node process will never exit, it will have to be killed
healthMonitor();
Điều chỉnh thông báo cảnh báo và hỗ trợ tắt máy sạch sẽ là một bài tập dành cho người đọc.
bạn có sử dụng libuv như một phần của ứng dụng node.js hay độc lập không? –