Powiadomienia systemowe
- Sesja wygasła!
Identyfikatory
Warianty tytułu
Five ways to insert concurrency to a program written in C#
Języki publikacji
Abstrakty
Dzisiejsze procesory w komputerach osobistych i urządzeniach mobilnych umożliwiają coraz bardziej efektywne zrównoleglanie działań w celu szybszego uzyskania wyników. Twórcy oprogramowania mają wiele różnych możliwości zaimplementowania współbieżności, jednak zazwyczaj trzymają się jednej, najbardziej znanej sobie techniki. Warto prześledzić działanie każdej z nich, aby odkryć, kiedy można ją wykorzystać w sposób efektywny, a kiedy lepiej poszukać alternatywy. W poniższym artykule zostały przedstawione sposoby równoległej implementacji obliczeń matematycznych z wykorzystaniem wątków, zadań, puli wątków, puli zadań oraz równoległej pętli for z klasy Parallel. Wszystkie zostały napisane w języku C# na silniku Windows Presentation Foundation platformy .NET. Zaimplementowane obliczenia matematyczne to obliczenie liczby Pi z pomocą wzoru Leibniza.
Nowadays processors working in personal computers and mobile devices allow for more and more effective parallel computing. Developers have at their disposal many different methods of implementing concurrency, but usually use the one, that they now best. It is beneficial to know, when a particular technique is good and when it is better to find an alternative. This paper presents different ways of implementing parallel mathematical calculations using threads, tasks, thread pool, task pool and parallel for loop. Each method was used in a C# application running on Windows Presentation Foundation engine on .NET platform. Implemented operation is calculation value of Pi using Leibnitz’s formula.
Słowa kluczowe
Czasopismo
Rocznik
Tom
Strony
62--67
Opis fizyczny
Bibliogr. 13 poz., rys.
Twórcy
autor
- Politechnika Lubelska, Instytut Informatyki, Nadbystrzycka 36B, 20-618 Lublin, Polska
autor
- Politechnika Lubelska, Instytut Informatyki, Nadbystrzycka 36B, 20-618 Lublin, Polska
Bibliografia
- [1] Blaar H., Lange T., Winter R., Karnstedt M.: Possibilities to solve the clique problem by thread parallelism using task pools. 19th IEEE International Parallel and Distributed Processing Symposium 2005.
- [2] Bugnion Laurent: MVVM : Multithreading and Dispatching in MVVM Applications. MSDN Magazine, 2014.
- [3] Choudhury Olivia i inni: Balancing Thread-Level and Task-Level Parallelism for Data-Intensive Workloads on Clusters and Clouds. IEEE International Conference on Cluster Computing, 2015.
- [4] Jin Jiangming, Zhang Yang, Tang Shanjiang, Fan Hongfei: Performance Modeling and Analysis for Critical Section Contention in Parallel Codes. IEEE Trustcom/BigDataSE/ISPA, 2016.
- [5] Lee Jiyeon, Chwa Hoon Sung, Lee Jinkyu, Shin Insik: Thread-level priority assignment in global multiprocessor scheduling for DAG tasks. Journal of Systems and Software, 2016.
- [6] Nowak Robert Współdzielenie obiektów w aplikacjach współbieżnych. Software Developers Journal 2010
- [7] Paolieri Marco i inni: A Software-Pipelined Approach to Multicore Execution of Timing Predictable Multi-threaded Hard Real-Time Tasks. 14th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing, 2011.
- [8] Schubring Tadeusz: Algorytmy równoległe w języku programowania C#. TTS Technika Transportu Szynowego, 2016.
- [9] Schwan K., Zhou H.: Dynamic scheduling of hard real-time tasks and real-time threads. IEEE Transactions on Software Engineering, 1992.
- [10] Smoliński Mateusz: Elimination of task starvation in conflictless scheduling concept. Information Systems in Management vol. 5 (2) 2016, 237−247.
- [11] Tousimojarad Ashkan i inni: Number of Tasks, not Threads, is Key. 23rd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, 2015.
- [12] Warczak Mateusz i inni: Programowanie równoległe i asynchroniczne w C# 5.0. Wydawnictwo Helion, 2014.
- [13] Wirth Niklaus: Tasks versus Threads: An Alternative Multiprocessing Paradigm. Springer-Verlag 1996.
Typ dokumentu
Bibliografia
Identyfikator YADDA
bwmeta1.element.baztech-9f9e5401-f6cc-4639-b8f8-a56452652e4b