안녕하세요.
C# Multi threads, lock, queue관련해서 질문드립니다.
아래와 같은 코드에서 lstServers 객체를 30개 정도 만든다고 가정할때
각 객체들이 Network에서 async하게 받은 데이터를  동시에 하나의 queue에 넣을 때
lock이 걸려서 queue가 깨지는 일은 없지만, load때문에 간혹 쓰지 못하는 경우가 발생합니다.
이럴 경우 어떻게 해결할 수 있을지 잘 모르겠습니다. 
public class MainClient : Form
{
    public static Queue Q = new Queue<byte[]>();
    InitializeComponent();
     private void btnConnect_Click(object sender, EventArgs e)
     {
        lstServers = new List<SocketNetworks>();
        lstServers.Add(new SocketNetworks("127.0.0.1", 1111));
        lstServers.Add(new SocketNetworks("127.0.0.1", 2222));
        for (int i = 0; i < lstServers.Count; i++)
        {
            lstServers[i].Server_Connect();
        }
     }
     public static void DataInsertQueue(byte[] buff)
     {
        lock (Q)
        {
           Q.Add(buff);
        }            
     }
} 
public class SocketNetworks : MainClient
{
  public SocketNetworks(string serverIP, int serverPort)
  {
     this.serverIP = serverIP;
     this.serverPort = serverPort;
  }
  
   public void Server_Connect()
   {
       //... Socket networks..
   }
   // ....
   private void ReceiveCallBack(IAsyncResult ar)
   {
       byte[] Ibuff = (byte[])ar.AsyncState;
       int recv = ClientSocket.EndReceive(ar); 
       
       // 다수의 작업.. parsing packets and control servers등 후
       MainClient.DataInsertQueue(Ibuff); <<<<<<<<<<<<<
   }
   ...
}