мой вопрос: Я пытаюсь работать с многопоточной TECHNIC поэтому я использовал Threadpool но то, что я хочу, это следующий Я хочу, чтобы определить размер ThreadPool, когда программа начинает , когда у меня есть Данные для управления, я возьму нить из ThreadPool для работы с этим элементом, , так как я прочитал, вы можете определить элементы в threadPool, как хотите, но каждый поток будет запускаться автоматически. Я хочу иметь контроль над потоком, чтобы определить, когда поток должен запускаться Если нет данных Поток должен ждать (или останавливаться), когда у меня есть новые данные (это похоже на запрос) один из потоков будет работать ..... спасибоиспользования ThreadPool
ответ
При использовании ThreadPool
вы обычно ставите в очередь запрос в пул с некоторыми (необязательными) входными данными, что приведет к тому, что пул будет выбирать доступный поток и запустить процесс. Когда это будет сделано, поток будет возвращен в пул и будет доступен для другого запроса. Вы, как правило, не нужно беспокоиться об управлении потоками, но может просто очередь рабочий элемент, когда это необходимо:
DataToWorkWith dataItem = GetDataToWorkWith();
if (dataItem != null)
{
ThreadPool.QueueUserWorkItem(MyProcessingMethod, dataItem);
}
// somewhere else in the class
private void MyProcessingMethod(object dataItem)
{
// work with the dataItem; this will run on a threadpool thread, if
// invoked through the thread pool
}
Таким образом, все, что вам нужно будет сделать, это создать какой-то процесс, выясняя, если есть данные для работы с, очередь запросов в ThreadPool
и пусть он выполняет свою работу.
Вот краткое резюме на C# ThreadPool Usage. Вот MSDN How To: Use a ThreadPool. И вот ссылка ThreadPool
.
В частности, вы можете получить доступную информацию, используя GetAvailableThreads
. Вы также можете контролировать минимальное и максимальное количество потоков в пуле потоков, используя SetMinThreads
и SetMaxThreads
.
В общем, я бы посоветовал не вмешиваться в число потоков, если вы точно не знаете, что делаете. Пул потоков совместно используется вами и компонентами CLR, поэтому, изменяя количество потоков, вы можете повлиять на поведение CLR. Для получения дополнительной информации прочитайте раздел «Примечания» в документации класса ThreadPool
.
Обычно вы не управляете потоками нитей ThreadPool вручную. Рекомендуемое использование - очередь делегата, как показано на примере Fredrik, и пусть ThreadPool управляет потоком. С этим соглашением, если нет данных, вы не должны ставить в очередь любую работу. Когда данные становятся доступными, вы можете поставить в очередь работу. Если вы ищете способ запуска фонового процесса, при запуске приложения вы можете создать Timer
и добавить его в состояние приложения, или вы можете определить статический класс, который управляет Timer
, и коснитесь этого класса при запуске приложения ,
- 1. Недостатки использования ThreadPool
- 2. Это правильный случай использования Threadpool?
- 3. Threadpool QueueUserWorkItem без использования SetMaxThreads, GetMaxThreads
- 4. C++ Threadpool без использования boost lib
- 5. Недостатки использования ThreadPool для длинных потоков
- 6. Периодические задачи в C# без использования ThreadPool
- 7. boost threadpool
- 8. pthread threadpool?
- 9. Завершение threadpool
- 10. Node.js threadpool
- 11. Связь ThreadPool
- 12. Silverlight Threadpool
- 13. ThreadPool Exception
- 14. Java ThreadPool
- 15. Очистка ThreadPool
- 16. Синхронизация Threadpool
- 17. Параметры ThreadPool
- 18. C# - ThreadPool QueueUserWorkItem Использовать?
- 19. Реализация обертки вокруг threadpool
- 20. переменные приложения ASP.NET установлены в null после использования в Threadpool
- 21. BeginXXX и threadpool
- 22. управлять потоками с помощью ThreadPool
- 23. boost :: threadpool :: pool vs.boost :: thread_group
- 24. Если ThreadPool полон, как сделать Action.BeginInvoke икры нон Threadpool нити
- 25. System.OutOfMemoryException using ThreadPool
- 26. Завершение выполнения ThreadPool
- 27. ASP.NET CacheDependency из ThreadPool
- 28. java ThreadPool состояние гонки
- 29. Рекурсивные ThreadPool в Java?
- 30. ExecutorService invokeall threadpool issue
WTF. Здесь нет никаких вопросов. Вопросы заканчиваются вопросительными знаками (?). Кроме того, это бессвязная, бессвязная мысль. Серьезно, я не могу даже найти отдельные предложения здесь. Голосовать-To-Close. – abelenky