[C#] Wątki aplikacji

0

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 ? :)

0

co to znaczy załatwić wątki

0

:) załatwić wątki to znaczy mieć je w tablicy typu Thread[] powiedzmy.

0

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ęść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1