libuv

    1熱度

    1回答

    這是一個關於JavaScript內部的問題。 可以說我有10個異步任務,都需要x秒的時間才能運行。在等待迴應時,腳本閒置。 在後臺JavaScript引擎詢問「任務隊列中是否有任何內容」。據我瞭解,這是一個循環。因此,事件循環。我知道在Node中這是用Libuv實現的。我已閱讀這篇文章,它有點解釋:https://nikhilm.github.io/uvbook/basics.html JavaS

    1熱度

    2回答

    node.js的documentation描述了其基礎事件循環的所謂的階段。 它明確指出空閒和準備階段是隻在內部使用。 對於node.js的事件循環是libuv之一,不言而喻,這些階段可能映射到libuv的idle和prepare句柄上。 它們將有助於在組織軟件中的任務時擁有更大的粒度。特別是,它們是執行I/O回調和投票階段之間的唯一方式。 無論如何,他們不是從底層環境出口。 這些階段被禁止的原因

    2熱度

    2回答

    所以這是我的節點是如何工作的理解:其中所有的JS代碼執行 單線。 IO /網絡調用利用場景後面的線程池。 (使用libuv這是一個C++庫) 一旦IO操作完成,它的回調被壓入回調隊列,並且回調可以被下一個滴答中的事件循環拾取。 我想了解的是如何編寫可以利用系統線程的代碼?我在C/C++中編寫一個庫併爲此提供一個Javascript綁定? 比方說,我有一些不需要IO但是CPU密集型的操作/功能,所以

    -1熱度

    1回答

    假設我有一個處理所有新連接的主循環和幾個全部運行它自己的循環的線程。我想分發我的客戶到這些循環。 在主線程中創建一個客戶端並傳遞給init函數的另一個循環(它將在另一個線程上運行)並且開始讀取是否是線程安全的? 如果沒有,該如何實現? (我想一個處理工作隊列的空閒函數可以做到這一點......)

    0熱度

    1回答

    當我嘗試發送一些基本的UDP消息時,它看起來好像不發送它。 我試圖運行幾個我在網上找到的例子。 我正在使用SocketTest v3.0.0測試服務器/客戶端。 當我測試TCP發送一切按預期工作,但我UDP情況下,它根本沒有。 你能提供一些非常基本的UDP發送代碼片段嗎? 例如,接收器將在本地主機上,並且消息將包含「測試」,並且它將固定長度? 我還有一個小問題。它發送消息在本地主機可以應用程序(服

    0熱度

    1回答

    我正在測試服務器的libuv。 問題是數據部分到達,我需要等待更多的數據。 (這種情況還沒有發生,但我認爲這是迫在眉睫,在我的經驗) 但這libuv取決於事件的基礎上,旁邊after_read()函數 不能保證下一個數據包會是剩下的。 我想知道你是如何解決問題的。 謝謝。 加入瞭解更多信息。 我關心拆分包的情況。 假設客戶端A,客戶機B,服務器S. A發送100個字節到服務器。 B向服務器發送10

    1熱度

    1回答

    我試圖運行下面的代碼和功能保持第一後返回0,得到: while (true) { int res = uv_run(uv_default_loop(), UV_RUN_ONCE); if (res == 0) printf("ok\n"); } 有沒有一種方法來重置循環,所以它會在返回0第二次接收並不會因第一次成功而停滯不前?

    0熱度

    1回答

    定義我讀了libuv源代碼,並發現這些函數聲明: void uv_prepare_invoke(uv_loop_t* loop); void uv_check_invoke(uv_loop_t* loop); void uv_idle_invoke(uv_loop_t* loop); 定義在internal.h。 但我找不到函數體,爲什麼?

    0熱度

    1回答

    例如,我發送的緩衝區有20K字節(用戶列表)。 我想知道uv_write()是否可以一次發送20K字節,而不是sepearted。 那麼回調函數after_write_cb會返回成功的狀態0嗎? 也就是說,發送時不需要關心剩下的剩餘物嗎?

    1熱度

    2回答

    考慮官方documentationlibuv(部分其他實用程序)。 這是uv_buf_init聲明: uv_buf_t uv_buf_init(char* base, unsigned int len) 文檔狀態(重點煤礦): 構造uv_buf_t。 由於平臺的差異,用戶不能依賴uv_buf_t結構的基本成員和len成員的順序。 uv_buf_t完成後,用戶負責釋放基址。返回通過值傳遞的結構體