Ich verwende C# Sockets (die IOCP für Rückrufe verwenden). Ich möchte eine Methode, um festzustellen, ob meine Verarbeitungslogik zurückfällt. Gibt es einen API-Aufruf, der mir die Größe von abgeschlossenen Operationen geben könnte, die nicht von Rückrufen verarbeitet wurden?Ist es möglich zu wissen, wie viele nicht verarbeitete abgeschlossene Vorgänge in einer IOCP über einen API-Aufruf in die Warteschlange gestellt werden?
Ich habe überlegt, etwas wie eine Heartbeat-Operation zu verwenden, die ich in die Warteschlange schreiben würde und feststellen würde, ob ich nach der verstrichenen Zeit zurück bin, aber ich würde eine direktere Route bevorzugen (plus I don '). t haben einfachen Zugriff auf die IOCP-Handle, die. Net Interna Controls).
Die recht ordentlich ist, aber .NET belichten nicht seine intern erstellt 'm_hIOCP'. – dtb
das ist genial! @ dtb kein Problem, ich kann es mit der Reflexion extrahieren. aber egal, ich denke, mit einem Herzschlag wird mir eine realistischere Sicht darauf, wie weit hinter mir bin. Die Implementierung des Heartbeats wird jedoch noch problematischer als diese einfache Methode, da ich keine Möglichkeit habe, einen benutzerdefinierten Handler für den .net IOCP-Threadpool zu implementieren. Ich müsste eine Socket-Verbindung zu meinem Server verwenden, um den Heartbeat zu implementieren. –
Wenn Sie den Griff mit Reflektion extrahieren können, poste bitte deinen Code irgendwo. Ich habe das schon ewig versucht. – dtb