monitor
monitor分为服务器的monitor 和 skynet_monitor,整个服务器只有一个服务器monitor,每条工作线程绑定一个skynet_monitor,上面在声明了若干条线程数量后,先做的就是创建服务器monitor。
服务器 monitor
// 可以把服务退出的消息从框架层抛出来,让上层逻辑可以感知到
struct monitor {
int count; // 多少条工作线程
struct skynet_monitor ** m; // skynet_monitor
pthread_cond_t cond; // 条件变量
pthread_mutex_t mutex; // 互斥锁
int sleep;
int quit; // 服务器是否退出的标记
};
start(int thread) {
...
struct monitor *m = skynet_malloc(sizeof(*m));
memset(m, 0, sizeof(*m));
m->count = thread;
m->sleep = 0;
m->m = skynet_malloc(thread * sizeof(struct skynet_monitor *));
int i;
for (i=0;i<