Witam, zastanawia mnie jak załatwić sobie wątki jakieś aplikacji (jako klasa Thread z System.Threading).
Można założyć że mam już proces, a także ProcessThreadCollection z wątkami tego programu, tylko jak to rzucić na threads ?
Any ideas ? :)
Witam, zastanawia mnie jak załatwić sobie wątki jakieś aplikacji (jako klasa Thread z System.Threading).
Można założyć że mam już proces, a także ProcessThreadCollection z wątkami tego programu, tylko jak to rzucić na threads ?
Any ideas ? :)
co to znaczy załatwić wątki
:) załatwić wątki to znaczy mieć je w tablicy typu Thread[] powiedzmy.
O coś takiego Ci chodzi?
Thread[] threads = new Thread[10];
foreach(Thread t in threads)
{
t = new Thread(funkcjaDoWykonania);
t.Start();
}
t.join();
public funkcjaDoWykonania()
{
//zrób coś tam
}
Powinno zadziałać, aczkolwiek piszę z pamięci bo w pracy nie mam VisualStudio :/.
Możesz też skorzystać z puli wątków - tutaj jest dokumentacja z przykładami.
Cytat z wykładu mojego profesora:
Każdy wątek z puli po zakończeniu swojego zadania powraca do kolejki wątków oczekujących. W ten sposób może być ponownie użyty bez dodatkowego narzutu związanego z tworzeniem nowego wątku.
Pule wątków mają określoną liczbę wątków w puli. W przypadku, gdy w puli nie ma wolnego wątku, nadchodzące żądania przydzielenia wątku są umieszczane w kolejce i czekają na dostępność wątku w puli. Takie rozwiązanie pozwala również ograniczyć liczbę działających wątków w systemie i zapobiegać jego przeciążeniu czy zablokowaniu.
Alternatywą jest także korzystanie z biblioteki TPL - Task Parallel Library, która (łopatologicznie) działa tak, że jak masz na przykład w pętli wykonać coś milion razy to przy pomocy tej biblioteki w inteligenty sposób będziesz mógł podzielić wykonywanie tej pętli na kilka wątków, tak że każdy wątek wykona jej część.