Я создал пользовательский ThreadPool, оптимизированный для моих конкретных потребностей. Однако, когда в процессе есть несколько приложений AppDomains, CLR ThreadPool может быть разделен на всех AppDomains, и я хотел бы иметь возможность воспроизвести это поведение..Net Как создать пользовательский ThreadPool, общий для всех AppDomain процесса?
Это можно сделать с помощью MarshalByRefObject и Remoting, чтобы создать распределенный ThreadPool, но я боюсь, что он добавит нежелательные накладные расходы, поскольку ключевая цель настраиваемого пула потоков - это производительность.
Другим теоретическим решением было бы взломать границу памяти AppDomain с помощью неуправляемого объекта. Если я прав, граница памяти в AppDomain применима только к управляемым объектам, поэтому в каждом AppDomain может быть одна управляемая оболочка, указывающая на тот же неуправляемый объект.
Так что мои вопросы:
- Есть ли способ сделать пул потоков пользовательских с помощью удаленного взаимодействия с минимальными затратами?
- Если нет, то можно разделить неуправляемый объект через AppDomain?
Что побудило решение написать пользовательский поток? Какая функциональность отсутствовала в .NET threadpool? – Walter
CLR ThreadPool не может назначать приоритеты рабочим элементам, стоящим в очереди в пул. Диспетчер CCR предлагает отличные возможности, и я думаю, что интересен гибрид между диспетчером CCR и CLR ThreadPool. –