public void ShouldEnqueueAndDequeue () { ConcurrentLinkedQueue<int> pool = new ConcurrentLinkedQueue<int>(); pool.Enqueue (1); Assert.AreEqual (1, pool.Dequeue ()); }
public void ShouldEnqueueAndDequeue() { ConcurrentLinkedQueue <int> pool = new ConcurrentLinkedQueue <int>(); pool.Enqueue(1); Assert.AreEqual(1, pool.Dequeue()); }
public static void RecycleReceiver(IReceiver r) { if (null == r) { Debug.LogErrorFormat("On recycle receiver is null !!! "); return; } r.Clear(); receiverPool.Enqueue(r); }
public static void RecycleMessage(IBaseMessage r) { if (null == r) { Debug.LogErrorFormat("On recycle IBaseMessage is null !!! "); return; } r.Clear(); msgPool.Enqueue(r); }
/// <summary> /// Queues the given buffer to the send queue and notifies it. /// </summary> /// <param name="buffer"></param> private void EnqueueToSendQueueAndNotify(ChunkedBuffer buffer, Promise <ISockNetChannel> promise) { sendQueue.Enqueue(new SendQueueState() { buffer = buffer, promise = promise }); NotifySendQueue(); }
public void ShouldEnqueueAndDequeueMultiple () { ConcurrentLinkedQueue<int> pool = new ConcurrentLinkedQueue<int>(); for (int i = 1; i <= 10; i++) { pool.Enqueue (i); } for (int i = 1; i <= 10; i++) { Assert.AreEqual (i, pool.Dequeue ()); } }
public void ShouldEnqueueAndDequeueMultiple() { ConcurrentLinkedQueue <int> pool = new ConcurrentLinkedQueue <int>(); for (int i = 1; i <= 10; i++) { pool.Enqueue(i); } for (int i = 1; i <= 10; i++) { Assert.AreEqual(i, pool.Dequeue()); } }
/// <summary> /// 解析 /// </summary> public void Parser(short id, byte[] packetBuff) { IMessage packet = ProtobufDescriptor.ParserFrom(id, packetBuff); if (packet != null) { PacketTuple <IMessage> tuple = new PacketTuple <IMessage>(); tuple.SetPacket(id, packet); _messages.Enqueue(tuple); } else { UnityEngine.Debug.LogError("解析不了 协议号ID :" + id); } }
/// <summary> /// 子线程 处理消息 /// </summary> private void RunAsync() { //消息处理 接收数据解析数据 foreach (var net in nets) { net.Value.UpdateState(); //将错误信息 推到主线程 if (net.Value is TcpChnl) { var tcpChnl = (TcpChnl)net.Value; errors.Enqueue((int)tcpChnl.throwQueue.Dequeue()); } } }
public override object GetAttribute(string name, object value) { if (name == null) { return(null); } object result = base.GetAttribute(name, value); if (result == null) { // No previous value _modified = true; _ownerMessage.AddEvent(SharedObjectEventType.CLIENT_UPDATE_DATA, name, value); _syncEvents.Enqueue(new SharedObjectEvent(SharedObjectEventType.CLIENT_UPDATE_DATA, name, value)); NotifyModified(); _changeStats.Increment(); result = value; } return(result); }
/// <summary> /// Returns an object to the pool. /// </summary> /// <param name="pooledObject"></param> public void Return(PooledObject <T> pooledObject) { if (pooledObject == null) { throw new ArgumentNullException("PooledObject cannot be null."); } if (pooledObject.Pool != this) { throw new ArgumentException("PooledObject does not belong to this pool."); } if (Interlocked.CompareExchange(ref pooledObject._state, (byte)PooledObjectState.NONE, (byte)PooledObjectState.USED) == (byte)PooledObjectState.USED) { int currentPercentile = (int)(((float)(availableObjects + 1) / (float)totalPoolSize) * 100f); if (onDestroyObject != null) { pooledObject.Value = onDestroyObject(pooledObject.Value); } if (currentPercentile > trimPercentile || totalPoolSize <= minimumPoolSize) { pooledObject._state = (int)PooledObjectState.POOLED; pool.Enqueue(pooledObject); Interlocked.Increment(ref availableObjects); } else { pooledObject.Dispose(); } } else { throw new ArgumentException("PooledObject is already pooled. State: " + pooledObject.State); } }
/// <summary> /// Add a shared object event. /// </summary> /// <param name="type">Event type.</param> /// <param name="key">Handler key.</param> /// <param name="value">Event value.</param> public void AddEvent(SharedObjectEventType type, string key, object value) { _events.Enqueue(new SharedObjectEvent(type, key, value)); }
public void ReturnContext(MessagingContext context) { pool.Enqueue(context); }
public void EnqueueSenderMsg(IBaseMessage msg) { senderQueue.Enqueue(msg); }
public void EnqueueReceiver(IReceiver item) { receiverQueue.Enqueue(item); }
public void EnqueueSocketConnectState(SocketConnectState item) { socketStateQueue.Enqueue(item); }