Behandelt boost :: asio die rekursiven Serververbindungen korrekt?boost :: asio und rekursive Serveraufrufe
Ich habe einen asynchronen TCP/IP-Server, der sich innerhalb des async_read-Handlers mit sich selbst verbindet und scheinbar blockiert: Der nächste async_accept funktioniert, aber async_read blockiert.
Der Server basiert auf dem http asio-Beispiel mit einem Thread-Pool.
Es implementiert eine bestimmte API, die Clients verwenden, und kann einige der Funktionen auch an einen anderen Server delegieren (der wie ein Proxy oder ein Cloud-Knoten agiert). Das Problem ist, dass, wenn ein anderer Server localhost ist (z. B. sich selbst), der Deadlock irgendwo innerhalb von asio-Bibliotheken auftritt.
Irgendwelche Vorschläge?
Können Sie etwas Code posten? –
Nun, ich habe herausgefunden, dass es einen globalen SSL-Strang in ASIO gibt, der den Deadlock verursacht. Es ist ziemlich bedauerlich, da ich jetzt nach einem Workaround suchen muss. In der Tat gibt es einen Patch, der die Situation verbessert, aber nicht vollständig löst: https://svn.boost.org/trac/boost/ticket/3958 – dremon