Photon client отдельном потоке

Photon client отдельном потоке

Сообщение GLeBaTi 27 ноя 2014, 15:08

Здравствуйте. Сейчас у меня сетевая обработка сообщений реализована примерно так:
Синтаксис:
Используется csharp
class PhotonClient
{
public PhotonClient()
        {
            peer = new LitePeer(this, ConnectionProtocol.Tcp);
            this.StartDispatch();
        }

private void StartDispatch()
        {
            dispatchThread = new Thread(new ThreadStart(DispatchLoop));
            dispatchThread.Start();
        }
private void DispatchLoop()
        {
            while (!abortDispatchThread)
            {
                peer.Service();
                System.Threading.Thread.Sleep(Helper.srvCallTimesMs);
            }
        }
}

Тобишь в отдельном потоке. Сегодня зашел в исходники Photon Unity3D SDK, так там peer.Servece вызывается из Update, т.е. из главного потока игры.
Как лучше делать? Какие плюсы и минусы?

(и пользуясь случаем: чем refresh от reimport отличается? (для скриптов включительно))
GLeBaTi
UNIт
 
Сообщения: 80
Зарегистрирован: 29 янв 2011, 14:42

Re: Photon client отдельном потоке

Сообщение shade007 12 янв 2015, 01:41

Юнити апдейт происходит при обновлении кадра и при падении фпс или при полном зависании велик шанс словить дисконект)
shade007
UNец
 
Сообщения: 34
Зарегистрирован: 03 фев 2014, 00:06

Re: Photon client отдельном потоке

Сообщение Woolf 12 янв 2015, 14:03

Можно и так, только разбор полученных пакетов вам нужно делать на главном потоке. Т.е. вам нужно создать защищенную очередь, в которую вы будете складывать полученные пакеты, а на главном потоке - их доставать и обрабатывать. Можно все сразу, можно по одному на фрейм, а можно и по 5-6 штук за фрейм, это уже как вы реализуете.

чем refresh от reimport отличается


Логично предположить, что refresh - это просто проверить данные скрипта/проекта и, в случае необходимости перекомпилить, а reimport - принудительная перекомпиляция, вне зависимости от того, нужна ли она.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Photon client отдельном потоке

Сообщение Lailore 14 янв 2015, 05:57

Woolf писал(а):Можно и так, только разбор полученных пакетов вам нужно делать на главном потоке. Т.е. вам нужно создать защищенную очередь, в которую вы будете складывать полученные пакеты, а на главном потоке - их доставать и обрабатывать. Можно все сразу, можно по одному на фрейм, а можно и по 5-6 штук за фрейм, это уже как вы реализуете.

чем refresh от reimport отличается


Логично предположить, что refresh - это просто проверить данные скрипта/проекта и, в случае необходимости перекомпилить, а reimport - принудительная перекомпиляция, вне зависимости от того, нужна ли она.

Хочу уточнить, что защищенная очередь только для действий с движком Unity3d. Обрабатывать сами пакеты можно в любом потоке.
Аватара пользователя
Lailore
UNIт
 
Сообщения: 148
Зарегистрирован: 08 дек 2014, 23:53


Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1