写在前面
名词解释
skynet 是一个多线程框架,功能按服务划分,正确区分各个名词十分重要。
- 线程:程序可以并行运行多少个执行序,一般指 worker 线程
- 服务:模块运行时的实例,多个服务可以并发执行
- 协程:调度最小单元,一个服务由多个协程组成
skynet 线程
-
skynet 关于线程的代码如下,一共有5种线程。
/* skynet_imp.h */ #define THREAD_WORKER 0 #define THREAD_MAIN 1 #define THREAD_SOCKET 2 #define THREAD_TIMER 3 #define THREAD_MONITOR 4 -
按启动顺序排序是:
- thread_mian (主线程)
- thread_monitor (监控线程)
- thread_timer (定时器线程)
- thread_socket (网络线程)
- thread_worker (工作线程)
-
配置里面的 thread 指的是 thread_worker 数量。
/* skynet_start.c */ static void start(int thread) { pthread_t pid[thread+3]; 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<thread;i++) { m->m[i] = skynet_monitor_new(); } if (pthread_mutex_init(&m->mutex, NULL)) { fprintf(

文章介绍了Skynet框架的多线程结构,包括工作线程、主线程、监控线程等,并通过lua示例展示了如何在Skynet中启动和管理服务,以及服务间的独立性和并发执行情况。
最低0.47元/天 解锁文章
1838

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



