skynet_context_new(const char * name, const char *param) { struct skynet_module * mod = skynet_module_query(name); if (mod == NULL) return NULL; void *inst = skynet_module_instance_create(mod); if (inst == NULL) return NULL; struct skynet_context * ctx = skynet_malloc(sizeo...
slot 的类型为 skynet_context**,ctx 为 skynet_context*, 之前为 slot 申请了 slot_size 个 skynet_context* 大小的内存,所以 slot 内可以放 slot_size 个指针。skynet_handle_register() 实现了以下功能,从 slot 中找到一个位置存 ctx, 其中位置 0是保留的,如果找到了,直接返回,则下次找的时候从当前...
skynet_start中创建一个上下文环境, 一个 skynet_context 结构体, 创建失败, 进程直接退出。 详细代码如下: struct skynet_context * skynet_context_new(const char * name, const char *param) { struct skynet_module * mod = skynet_module_query(name); if (mod == NULL) return NULL; void *ins...
context结构体包含了skynet_module, skynet_handle产生的handle,消息队列列表,对应模块的实体,callback信息。虽然命名是context,但是并不像操作系统中的线程上下文记录很多线程相关信息,只是记录了一个协程所用到的模块及处理,消息队列,handle。 // skynet_handle.cstructhandle_name{char*name;uint32_thandle;};struc...