When working with multi threaded applications, we tend to spawn worker threads which can lead to ineffective code when not done correctly, for example threads will not get reused and will be recreated for each work items. The solution to all those problems is a ThreadPool which reuses threads and queues work items that are consumed by those threads. This sort of implementation while simple can have side effects as unless the pool Queue is immutable it will have to be locked each time an item Enqueued and...
Kolejny dzień kolejny wpis na blogu. Postawiono przede mną zadanie poprawy wydajności aplikacji w kontekście dodania do niej wielu wątków roboczych. Zadanie proste i banalne używając .NET. W związku z tym dziś słów kilka o klasie ThreadPool . Dzięki klasie ThreadPool i jej metodzie ThreadPool.QueueUserWorkItem sprawa jest naprawdę prosta. Jej użycie sprowadza się do "powiedzenia w C# - hej jest robota do wykonania niech ją ktoś dla mnie wykona w wolnej chwili". Naprawdę ... to takie proste. Oczywiście ta...
Okazuje się, że bardzo prosto, ale zacznijmy od początku. Niedawno zakończyłem pracę nad serwerem zajmującym się wykonywaniem tzw. zadań wsadowych. Definicje zadań do wykonania pobierane są z bazy danych, a w danym momencie może działać wiele serwerów. Każdy serwer rezerwuje sobie swoje zadania na pewien kwant czasu. Po upływie tego czasu inne serwery mają prawo przejąć to zadanie. Może się tak zdarzyć na przykład jeśli jakiś serwer ulegnie awarii. Jeśli wykonanie danego zadania zajmuje w...
Programowanie rozproszone 4993 dni, 15 godzin, 2 minuty temu 131 źrodło rozwiń