Я создал пользовательский ThreadPool, оптимизированный для моих конкретных потребностей. Тем не менее, когда в процессе находится несколько доменов приложений, CLR ThreadPool может быть общим для всех доменов приложений, и я хотел бы иметь возможность воспроизвести это поведение.
Это может быть сделано с помощью MarshalByRefObject и Remoting для создания распределенного ThreadPool, но я боюсь, что это добавит нежелательные накладные расходы, поскольку ключевой целью пользовательского пула потоков является производительность.
Другим теоретическим решением было бы взломать границу памяти AppDomain с помощью неуправляемого объекта. Если я в порядке, граница памяти в AppDomain применяется только к управляемым объектам, поэтому в каждом AppDomain может быть одна управляемая оболочка, указывающая на один и тот же неуправляемый объект.
Итак, мои вопросы:
- Есть ли способ сделать кастом
пул потоков с использованием удаленного взаимодействия с
минимальные накладные расходы?
- Если нет, не так ли
можно поделиться неуправляемым
объект через AppDomain?