簡體   English   中英

可靠的UDP實施設計問題

[英]Reliable UDP implementation design issue

我一直在圍繞UDP進行自定義,以使其可靠。 我有這個設計問題,只有在整個程序准備好並且開始將數據包從源發送到接收器后,我才意識到。

場景:我創建了一個用於接收數據包的單線程。 父級執行數據包發送作業。 由於這只是一個POC,因此我將緩沖區和公共數據結構保留為全局指針,由父級為其分配內存。 我正在照顧使用互斥的關鍵內存部分。

作為可靠性的一部分,我跨數據包發送了一些控制包。 在任何時候,客戶端將發送數據包並從服務器接收控制包,而服務器將接收數據包並發送控制包。 我使用了單套接字,因為我的理解是send&recv可同時在單套接字和默認阻止下工作。

問題:出於測試目的,我從源向接收器發送了100個數據包。 不幸的是,服務器端的線程正忙於接收數據包並將其存儲在緩沖區中。 在父線程獲得上下文切換之前,服務器代碼不會將數據包傳遞給應用程序。 這增加了整體通信中無法接受的延遲。

請幫助我了解問題所在; 可以進行哪些更改以提高性能?

在此先感謝Kedar

由於使用的是互斥鎖,因此在發送數據包后在一個線程上釋放互斥鎖時,另一個線程應該使用該數據包。 也許您沒有足夠快地釋放互斥量。

或者,讓套接字的select()方法為您處理接收時解除阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM