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
相关推荐
码艺-Alimjan7 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
事圆则缓13 分钟前
Java 常见数据结构与 Android 使用场景
android·java·数据结构
hulihutu4424 分钟前
拒绝延期、bug、货不对板:2026 管理系统定制开发落地保障手册
github·bug·鸿蒙系统·数据库管理员
xieliyu.26 分钟前
计算机网络:Fiddler 抓包工具使用教程 + HTTP 协议报文格式详解
java·笔记·计算机网络·测试工具·http·java-ee·fiddler
步行cgn27 分钟前
@Value 详解:Spring 属性注入的核心注解
java·python·spring
2401_8504811734 分钟前
UVA815
java
霸道流氓气质38 分钟前
Spring AI 多租户隔离方案
java·人工智能·spring
不会就选b43 分钟前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
Rain50944 分钟前
谁动了我的 URL?——记一次微前端“灵异 Bug“的排查实录
前端·vue.js·人工智能·前端框架·bug·ai编程
秋名RG1 小时前
Java 工程师学习路线
java·学习方法