в главном потоке проверяет доступность сервера, в новом потоке отправляет сообщения на сервер. Так вот сама проблема: сейчас тестирую случай, если сервер крашится, и в текущем виде программы оба потока пытаются подключиться, причем в один раз главный поток успеет подключиться первым, а в другой раз новый поток. Как решить эту проблему, чтобы Connect при срабатывании исключения вызывался только один раз, а отправка сообщения не кидала исключения, а ждала, когда сервер снова станет доступен? Вот тут код https://gist.github.com/niiiksh/e9247de05ca554885bf9db3c7040c1fc
Синглтон используй
ты можешь сделать, чтобы сообщения шли только когда прошлая проверка доступности была успешной && позже последней ошибки при броске сообщения ты не можешь достоверно отправить сообщение на онлайн сервак, т.к. он может упасть строго между последней проверкой и отправкой сообщения (очевидно) чтобы гарантированно не пересечься с проверкой, почитай, что такое примитивы синхронизации. Тебе, наверное, достаточно одного lock-а. PS. совершенно не вижу, почему бы не использовать одно соединение
Обсуждают сегодня