skynet源码解析--启动篇之配置

启动入口

    skynet启动的入口在文件skynet_main文件中的main函数,其实就是C程序的入口函数,然后显而易见的启动的传参argv,从中取出配置文件名赋值config_file 。如果不带参数启动,程序直接就退出了。

	const char * config_file = NULL ;
	if (argc > 1) {
   
		config_file = argv[1];
	} else {
   
		fprintf(stderr, "Need a config file. Please read skynet wiki : https://github.com/cloudwu/skynet/wiki/Config\n"
			"usage: skynet configfilename\n");
		return 1;
	}

初始化环境变量

    在skynet_env文件中可以看到保存环境变量的是一个全局参数E,类型是skynet_env其中

  1. lock是锁(skynet是多线程程序,全局变量需要加锁),其中有两种锁1)互斥锁 2)自旋锁。具体使用哪种锁根据不同的系统而不同,优先使用互斥锁,代码通过宏来分割。

  2. L是lua的状态机类型。
        所以其初始化就是分配E的内存,然后初始化lock,通过luaL_newstate创建lua的状态机。

    skynet_env_init() {
         
    	E = skynet_malloc(sizeof(*E));
    	SPIN_INIT
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值