skynet学习笔记

这篇笔记探讨了Skynet的基本原理,包括service之间的同步阻塞调用和非阻塞消息传递。服务间的`skynet.call`可能导致时序问题和脏数据,而使用队列可以解决这个问题。另外,`skynet.start`在创建服务时同步阻塞执行。在Socket部分,重点指出需要两次调用`socket.start`以正确接收和发送TCP服务器的数据,`socket.read`和`socket.write`作为阻塞API的使用也进行了说明。
摘要由CSDN通过智能技术生成

以前随手写的笔记, 可能有错误, 以后再改.

一. 基本原理

一个service就是一个luavm, service之间通过skynet.call来阻塞调用, 使用skynet.send非阻塞发消息.

每个skynet.call 在被调用的service中就是一个协程, 当在协程中调用阻塞api时, 会挂起协程.

这时service还是可以对外提供服务, 于是可能产生时序问题.

例如: A, B同时call C的test服务,

function C.test(a)

  print(a, "begin")

  skynet.sleep(300)

  print(a, "end")

end

A.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值