當前位置:
首頁 >
异步调用之内存拷贝
發(fā)布時間:2025/6/15
30
豆豆
? ? ? ? ?某次寫一個庫給前端調(diào)用,前端在傳入一個分配的內(nèi)存塊給庫里面有數(shù)據(jù),然后庫通過消息隊列的方式將數(shù)據(jù)存儲起來,發(fā)給服務(wù)端,但服務(wù)端收到的數(shù)據(jù)出現(xiàn)概率性亂碼。
? ? ? ? ?服務(wù)端打印收到的數(shù)據(jù)異常,客戶端打印數(shù)據(jù)發(fā)現(xiàn),發(fā)出去的數(shù)據(jù)是空。
? ? ? ? ?最后找到前端傳入的內(nèi)存塊,進入庫的消息隊列之后,前端函數(shù)返回,前端對應(yīng)內(nèi)存塊釋放,消息隊列保存的數(shù)據(jù)為空了,這是異步調(diào)用的情況,這時需要在庫對應(yīng)的內(nèi)存空間分配內(nèi)存保存數(shù)據(jù)。
? ? ? ? ?同步調(diào)用則不會出現(xiàn)這種情況,因為前端調(diào)用一個同步調(diào)用,是等這個調(diào)用返回之后,前端函數(shù)才返回,所有前端對應(yīng)的那塊內(nèi)存還沒有釋放,但是異步調(diào)用時,庫消息隊列的數(shù)據(jù)還沒有發(fā)生出去,前端函數(shù)返回,內(nèi)存塊釋放,這樣發(fā)生出去的數(shù)據(jù)為空。
總結(jié)
- 上一篇: redis之zskiplist
- 下一篇: 多线程服务端和客户端通信