Ich habe einen benutzerdefinierten ThreadPool erstellt, der für meine speziellen Anforderungen optimiert ist. Allerdings, wenn es mehrere AppDomains in den Prozess, die CLR ThreadPool ist in der Lage, über alle AppDomains freigegeben werden, und ich möchte in der Lage, dieses Verhalten zu reproduzieren.
Dies könnte mit MarshalByRefObject und Remoting geschehen, um einen verteilten ThreadPool zu erstellen, aber ich befürchte, dass es unerwünschten Overhead hinzufügen wird, da das Hauptziel des benutzerdefinierten Threadpools die Leistung ist.
Eine andere theoretische Lösung wäre, die AppDomain-Speicherbegrenzung mit einem nicht verwalteten Objekt zu hacken. Wenn ich richtig bin, die Speichergrenze in AppDomain gelten nur für verwaltete Objekte, so könnte es eine verwaltete Wrapper in jeder AppDomain alle auf das gleiche unmanaged Objekt sein.
Meine Fragen lauten also:
- Gibt es eine Möglichkeit, eine benutzerdefinierte Thread-Pool unter Verwendung von Remoting mit minimalem Overhead?
- Wenn nicht, ist es möglich, ein nicht verwaltetes Objekt über die AppDomain hinweg zu teilen?