我制作了一个针对我的特定需求进行优化的自定义 ThreadPool。但是,当进程中有多个 AppDomain 时,CLR ThreadPool 能够在所有 AppDomain 之间共享,我希望能够重现这种行为。
这可以使用 MarshalByRefObject 和 Remoting 来创建分布式线程池,但我担心它会增加不必要的开销,因为自定义线程池的关键目标是性能。
另一个理论上的解决方案是使用非托管对象破解 AppDomain 内存边界。如果我是正确的,AppDomain 中的内存边界仅适用于托管对象,因此每个 AppDomain 中可能有一个托管包装器都指向同一个非托管对象。
所以我的问题是:
- 有没有办法以最小的开销使用远程处理来制作自定义线程池?
- 如果没有,是否可以跨 AppDomain 共享非托管对象?