/// <summary> /// Obains a new Message for <code>TMessage</code> this can be a new Message a unused /// Message from the internal pool /// </summary> /// <typeparam name="TMessage">Type of data the message should wrap</typeparam> /// <returns>a (new) Message that can be used</returns> public static Message <TMessage> GetMessage <TMessage>() { Message <TMessage> message = MessagePool.GetMessage <TMessage>(); if (message == null) { message = new Message <TMessage>(); message._inUse = true; MessagePool.AddMessage <TMessage>(message); } return(message); }
public static Message <TMessage> GetMessage <TMessage>(TMessage content) { Message <TMessage> message = MessagePool.GetMessage <TMessage>(); if (message == null) { message = new Message <TMessage>(); message._inUse = true; MessagePool.AddMessage <TMessage>(message); } message.Content = content; return(message); }
// Start is called before the first frame update void Start() { Debug.Log($"Start: {SynchronizationContext.Current}"); var bind = new BindManager(new ThreadPoolExecutor()); for (int i = 0; i < 3; i++) { var msgOne = MessagePool.GetMessage(); msgOne.Init(new Address(), new Address(), 15); } for (int i = 0; i < 10; i++) { TaskCompletionSource <float> result = new TaskCompletionSource <float>(); var rqOne = MessagePool.GetMessage(); rqOne.Init(new Address(), new Address(), (float)i, Message.DeliveryType.ToOne, new ResultContainer <float>(result)); } Debug.Log($"Finish: {SynchronizationContext.Current}"); }