SampleSharedMemory.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using DeepCrystal.RPC;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace DeepMMO.Server.Sample
  7. {
  8. public class SampleSharedMemoryA : IService
  9. {
  10. public SampleSharedMemoryA(ServiceStartInfo start) : base(start) { }
  11. protected override void OnDisposed() { }
  12. protected override Task OnStartAsync()
  13. {
  14. //服务A,往共享内存内写入数据
  15. //共享内存工作机制:
  16. //1、向当前进程内写入数据
  17. //2、广播给整个集群,每个节点会自动同步写入操作,但不是实时的。
  18. var dict = this.SharedMemory.GetDictionary<DateTime>("ServiceStartDateTime");
  19. dict[SelfAddress.ServiceName] = DateTime.Now;
  20. return Task.CompletedTask;
  21. }
  22. protected override Task OnStopAsync(ServiceStopInfo stop)
  23. {
  24. return Task.CompletedTask;
  25. }
  26. }
  27. public class SampleSharedMemoryB : IService
  28. {
  29. public SampleSharedMemoryB(ServiceStartInfo start) : base(start) { }
  30. protected override void OnDisposed() { }
  31. protected override Task OnStartAsync()
  32. {
  33. //服务B,从共享内存里读取数据
  34. //服务B当前获取的可能不是最新的数据。
  35. var dict = this.SharedMemory.GetDictionary<DateTime>("ServiceStartDateTime");
  36. dict.TryGetValue("FuckService", out DateTime startingTime);
  37. return Task.CompletedTask;
  38. }
  39. protected override Task OnStopAsync(ServiceStopInfo stop)
  40. {
  41. return Task.CompletedTask;
  42. }
  43. }
  44. }