因此,繼承人我目前的Java實現:FIFO隊列發送請求,並等待響應
- 使用一個線程從UDP套接字接收UDP包,就把包成非阻塞隊列。
- 300個線程之一讀取此非阻塞隊列,並將此數據包作爲對連接到TCP主機/端口的Socket的請求處理。
- 等待響應並將其返回給UDP套接字。
這部分內容一切正常,但是從高負載下TCP套接字部分的分析,我發現在隨機的情況下,TCP套接字部分可能需要大約2-5秒才能完成。通常這部分需要2-3毫秒。我的問題是,我只是用隨機線程執行命中TCP Socket,並且沒有線程操作的FIFO。
有沒有一種方法可以將'請求'信息和當前線程引用(我想知道哪個線程處理'響應')放入一個FIFO阻塞隊列中,以確保最早處理最早的線程以確保TCP套接字請求/響應操作需要最少的時間。
各個線程是否阻止了TCP操作?還是你安排他們是非阻塞的?如果是這樣,怎麼樣? –
爲什麼?你怎麼知道這樣排序會改變TCP響應時間?當UDP本身無序時,爲什麼順序很重要? – EJP
我希望你的盒子裏有300個核心。 –