2016-12-28 14 views
6

Olay döngüsü sırasındaki zamanlayıcı sayısını belirlemek için Node.js'de bir arama yapmanın bir yolu var mı? Çok sayıda zaman aşımına sahip bir kütüphanem var ve bir tür dahili defter tutma sistemini kullanarak kendimi takip etmektense, V8 veya Libuv'a ya da ne olursa olsun kaç tane zamanlayıcıya sahip olursam iyi olurdu.Node.js olay döngüsünde (etkin) zamanlayıcı sayımı elde edin

Bu mümkün mü?

+2

SetTimeout yönteminin, bir sayacı gereksinimlerinize uyacak şekilde yöneten bir sarıcı ile üzerine yazdığına inanıyor musunuz? –

+2

@DavidRissatoCruz, bu işe yarayabilir, evet, ayrıca, aynı zamanda –

cevap

2

Sadece doğrudan libuv soramazsın V8 veya Libuv ya da her türlü

sorabilirsiniz, ama kesinlikle aktif zamanlayıcılar kaç bilmesi mümkün teklif ederse iyi olurdu.
Bunu yapmak için, tüm etkin tanıtıcıları almak için uv_walk geçerli bir döngü ile çağırabilirsiniz. Sonra, her bir tanıtıcıyı verilen geri çağrıyla kontrol edebilir ve type (uv_handle_type türünde) veri üyesinin UV_TIMER'a eşit olduğu sayıları sayabilirsiniz.
Sonuç, etkin zamanlayıcıların sayısıdır.

Kulp veri yapısı hakkında daha ayrıntılı bilgi için documentation'a bakın. aşağıdaki gibi

struct Counter { 
    static int count; 

    static void callback(uv_handle_t* handle, void*) { 
     if(handle.type == uv_handle_type::UV_TIMER) count++; 
    } 
}; 

Sen kullanabilirsiniz:


Önemsiz bir örnek olarak, aşağıdaki yapıyı düşünün Tabii

Counter::count = 0; 
uv_walk(my_loop_ptr, &Counter::callback); 
// Counter::count indicates how many active timers are running on the loop 

, bu bir üretime hazır kodu değil . Her neyse, umarım önerilen çözüm hakkında bir fikir verir. Libu belgeleri için here adresine bakın.

İlgili konular