TCP-сервер Indy 10

После долгих поисков я подумал, что Indy TCP-сервер будет лучшим для использования на сервере мгновенных сообщений, над которым я работаю. Единственная проблема, с которой я сейчас сталкиваюсь, - это рассылка и пересылка сообщения другому подключенному клиенту, отправка ответного ответа тому же клиенту выглядит нормально и неЯ вешаю активность других клиентов, но для пересылки сообщений другим клиентам я знаю механизм, использующийaContext.locklistи перебирая список соединений, чтобы найти клиентское соединение, которое должно принимать данные.

Проблема здесь, я думаю, в том, что она замораживает список и не• обрабатывать запросы других клиентов, пока не будет вызван список разблокировки. Так не повредит ли это производительности сервера? блокировка списка и итерация между соединениями для пересылки каждого сообщения (поскольку это часто происходит в мессенджере). Есть ли лучший способ сделать это?

Я использую Indy 10 и Delphi 7

Код для трансляции:

Var tmpList: TList;
    i: Integer;
Begin
tmpList := IdServer.Contexts.LockList;

For i := 0 to tmpList.Count Do Begin
  TIdContext(tmpList[i]).Connection.Socket.WriteLn('Broadcast message');
End;
IdServer.Contexts.UnlockList;

Код для пересылки сообщения:

Var tmpList: TList;
  i: Integer;
Begin
  tmpList := IdServer.Contexts.LockList;

  For i := 0 to tmpList.Count Do Begin
    If TIdContext(tmpList[i]).Connection.Socket.Tag = idReceiver Then
      TIdContext(tmpList[i]).Connection.Socket.WriteLn('Message');
  End;
  IdServer.Contexts.UnlockList;

Ответы на вопрос(1)

Ваш ответ на вопрос