0
管理組數據結構我使用二進制套接字和使用插座和libev在C/Linux的服務器閃存聊天客戶端。我有一切正常工作發送和接收消息,但現在我正在進行更復雜的一步。在聊天服務器
對於我的聊天服務器,我將把用戶分組到15個組中。服務器需要爲每個用戶設置一個唯一的ID,並且能夠快速確定用戶將哪個組廣播到另一個14用戶。我想服務器可以使用每個套接字連接的文件描述符,因爲這些應該都是唯一的。
問題是這樣的:你得到了一個從libev中爲某個文件描述符觸發的讀事件。您現在需要快速確定該FD屬於哪個組,然後將該消息廣播給組中的每個人。 什麼是這個問題的最佳數據結構?
這聽起來像一個很好的解決方案。當使用libev時,我不相信我能控制傳遞給讀取事件的參數。 ev_io結構就是我必須使用的,它有一個FD的int,就是這個。我認爲你正在做的事情,我會試着想辦法解決這個問題。 – 2012-02-21 06:26:35
我能想到的唯一的事情是對FD一次哈希查找組ID,然後再散列的組ID找到用戶ID的數組。有兩個散列表和兩個散列的計算可能是一個殺手。 – 2012-02-21 06:44:54
如果你認爲兩個哈希表查找將是什麼使你的表現是不可接受的,在網絡套接字執行I/O的時候,有什麼東西與你的設置嚴重怪異。您爲此設置了多少個併發用戶?數十萬? – unwind 2012-02-21 08:13:21