学习云风的skynet也有很久了,但是一直无法得心应手,我以前没做过服务端,看C代码事没什么难度,但是整个架构会把我绕的很晕,也在群里说过自己的想法,希望有应对新接触服务端的入门文档,但是没办法,条件限制如此,我们还是得自己去看源代码,这里记录一下我学习过程中遇到的一些问题。
当我看到require "skynet.core"的时候有点疑惑,因为我并没有找到这样一个lua文件,但是找不到就无法继续学习下去,所以最后在C语言部分的代码中找到了luaopen_skynet_core,这就是skynet.core的C语言实现了,可以看一下其中包含的一些函数:
int
luaopen_skynet_core(lua_State *L) {
luaL_checkversion(L);
luaL_Reg l[] = {
{ "send" , lsend },
{ "genid", lgenid },
{ "redirect", lredirect },
{ "command" , lcommand },
{ "intcommand", lintcommand },
{ "error", lerror },
{ "tostring", ltostring },
{ "harbor", lharbor },
{ "pack", luaseri_pack },
{ "unpack", luaseri_unpack },
{ "packstring", lpackstring },
{ "trash" , ltrash },
{ "callback", lcallback },
{ "now", lnow },
{ NULL, NULL },
};
luaL_newlibtable(L, l);
lua_getfield(L, LUA_REGISTRYINDEX, "skynet_context");
struct skynet_context *ctx = lua_touserdata(L,-1);
if (ctx == NULL) {
return luaL_e

这篇博客记录了作者在学习云风的Skynet服务端框架时遇到的问题,特别是对`skynet.core`库的困惑。作者在C语言源码中发现了`luaopen_skynet_core`,揭示了`skynet.core`在C语言层面的实现,并计划深入研究其中包含的函数。
1235

被折叠的 条评论
为什么被折叠?



