簡體   English   中英

使用同一websock句柄的兩個線程-是否會引起任何問題?

[英]Two threads using the same websock handle- does it cause any issue?

我們有一個C ++應用程序來發送和接收WebSocket消息

但是,這兩個線程使用相同的WebSocket句柄。 會引起什么問題嗎? 我不知道我們是否必須以其他方式處理它。 它可以在我們的應用程序中工作-我們能夠發送和接收消息-但我不知道它在生產環境中是否會出現任何問題。 有誰有更好的主意?

像大多數平台一樣,幾乎所有的Windows API系統調用都沒有提供線程障礙,只能阻止同時訪問內核的關鍵部分。 雖然我不能肯定地說(文檔似乎無法回答您的明確問題),但如果WinHTTP API提供了阻止多個線程互相踩踏的屏障(可以這么說),我會感到驚訝-尤其是因為它確實只是一個“幫助程序” API,它直接使用較低級別的Winsock東西-我會自己承擔實現必要障礙的責任。

我也想知道為什么您要以這種方式使用線程。 我對WinHTTP API基本上一無所知,但是我確實注意到WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS ,這使我相信您可以實現一種異步方法,該方法可以防止任何線程安全性問題開始(並且可能更快且內存效率更高)。

看來WinHTTP的回調機制相當具有表現力。 請參閱WINHTTP_STATUS_CALLBACK 大概可以簡單地使用非阻塞操作,創建事件偵聽器並將連接句柄與dwContext關聯。 不涉及線程。

暫無
暫無

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

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