1
我一直在鑽研最近進入線程套接字服務器。不幸的是,我還沒有找到代碼,其中用戶可以PM或私人消息。由於每個線程都通過線程連接,因此我一直在尋找一種方法來修改線程的變量而無需任何快樂。我是否必須創建一個全局變量來保存每個線程解析的所有消息(使用互斥鎖)?螺紋套接字服務器私人消息
我一直在鑽研最近進入線程套接字服務器。不幸的是,我還沒有找到代碼,其中用戶可以PM或私人消息。由於每個線程都通過線程連接,因此我一直在尋找一種方法來修改線程的變量而無需任何快樂。我是否必須創建一個全局變量來保存每個線程解析的所有消息(使用互斥鎖)?螺紋套接字服務器私人消息
是的,您需要某種共享數據結構,受互斥鎖保護。
它不需要是全局的,但所有的連接處理線程都需要引用它。一個全局可以完成這個任務,但是在主線程中分配的數據結構也是如此,並且在創建每個線程時都會引用它。
假設你的線程被寫入阻塞在它們正在讀取的套接字上,那麼棘手的部分會在它們有新的(內部)消息時喚醒它們。解決這個問題的最簡單方法可能是爲每個線程創建一個pipe()
,並且在他們正在處理的套接字和其管道上的線程上阻塞select()
。然後,您可以通過管道向它們發送私人消息,共享數據結構將只查找連接的用戶並找到其管道的文件描述符。