40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C#
		
	
	
using System.Collections.Generic;
 | 
						|
using System.Threading;
 | 
						|
using base_kcp;
 | 
						|
 | 
						|
namespace dotNetty_kcp.thread
 | 
						|
{
 | 
						|
    public class ExecutorPool:IExecutorPool
 | 
						|
    {
 | 
						|
        private List<IMessageExecutor> _messageExecutors = new List<IMessageExecutor>();
 | 
						|
        
 | 
						|
        private int atomicIndex;
 | 
						|
 | 
						|
        public IMessageExecutor CreateMessageExecutor()
 | 
						|
        {
 | 
						|
            IMessageExecutor executor = new ThreadMessageExecutor();
 | 
						|
            executor.start();
 | 
						|
            _messageExecutors.Add(executor);
 | 
						|
            return executor;
 | 
						|
        }
 | 
						|
 | 
						|
        public void stop(bool stopImmediately)
 | 
						|
        {
 | 
						|
            foreach (var messageExecutor in _messageExecutors)
 | 
						|
            {
 | 
						|
                messageExecutor.stop(stopImmediately);
 | 
						|
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public IMessageExecutor GetAutoMessageExecutor()
 | 
						|
        {
 | 
						|
            Interlocked.Increment(ref atomicIndex);
 | 
						|
            return _messageExecutors[atomicIndex % _messageExecutors.Count];
 | 
						|
        }
 | 
						|
 | 
						|
        public void scheduleTask(IScheduleTask scheduleTask)
 | 
						|
        {
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |