异步调用之内存拷贝
? ? ? ? ?某次寫一個庫給前端調用,前端在傳入一個分配的內存塊給庫里面有數據,然后庫通過消息隊列的方式將數據存儲起來,發給服務端,但服務端收到的數據出現概率性亂碼。
? ? ? ? ?服務端打印收到的數據異常,客戶端打印數據發現,發出去的數據是空。
? ? ? ? ?最后找到前端傳入的內存塊,進入庫的消息隊列之后,前端函數返回,前端對應內存塊釋放,消息隊列保存的數據為空了,這是異步調用的情況,這時需要在庫對應的內存空間分配內存保存數據。
? ? ? ? ?同步調用則不會出現這種情況,因為前端調用一個同步調用,是等這個調用返回之后,前端函數才返回,所有前端對應的那塊內存還沒有釋放,但是異步調用時,庫消息隊列的數據還沒有發生出去,前端函數返回,內存塊釋放,這樣發生出去的數據為空。
總結
- 上一篇: redis之zskiplist
- 下一篇: 多线程服务端和客户端通信