У меня есть асинхронное приложение, выполняющее несколько потоков, выполняющих операции через сокеты, где операции планируются, а затем выполняются асинхронно.
Я пытаюсь избежать ситуации, когда после запланированной операции чтения через сокет сокет закрывается и снова открывается (возможно, другим узлом в другой операции), прежде чем начнется выполнение первой операции, что приведет к чтению правильный дескриптор файла, но неправильный peer.
Проблема возникает потому, что (accept (); close (); accept ()) возвращает одинаковое значение fd в обоих методах accept (), что может привести к описанной выше ситуации.
Я не вижу способа избежать этого.
любой намек?