skynet call可能引发的bug

skynet.call 是同步阻塞(协程级),if 判断仅在执行瞬间有效,call 阻塞期间变量可能被其他消息修改

Lua 复制代码
local test = 10
-- 场景1:处理某个消息时执行
function CMD.some_cmd()
    if 0 < test then
        -- skynet.call 阻塞当前协程,等待目标服务返回
        local ret = skynet.call("target_svc", "lua", "do_something")
        -- 【风险点】call 返回后,test 可能已被修改
        print("test值:", test) -- 此时test可能≤0
    end
end
-- 场景2:其他消息触发修改test
function CMD.change_test()
    test = 0 -- 修改test的值
end
相关推荐
JAVA面经实录91718 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
一杯奶茶¥19 小时前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
不能只会打代码19 小时前
边缘视频分析平台的架构设计与性能优化——从750ms到190ms的调优之路
java·spring boot·redis·性能优化·边缘计算·物联网竞赛
小刘|19 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
KANGBboy19 小时前
java知识五(继承)
java·开发语言
AI人工智能+电脑小能手19 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
DIY源码阁19 小时前
JavaSwing饮品管理系统 - MySQL版
java·数据库·mysql·eclipse
二哈赛车手19 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
泡^泡20 小时前
Spring AI简单高仿DeepSeek问答页面
java·人工智能·spring
带刺的坐椅20 小时前
Solon v4.0 正式发布,高考记忆版
java·ai·solon·flow·solon-ai