Application of GO programming language for simulation of mass service processes
DOI:
https://doi.org/10.30837/2522-9818.2024.2.065Keywords:
computer simulation; System of Mass Services; Go programming language; concurrency.Abstract
The subject matter of the article is methods and approaches to software modeling of System of Mass Services on the example of a multi-channel system with a limited queue and failures in case of its overflow. The goal of the work is to justify the feasibility of using modern computer information technologies, namely the Go programming language for modeling System of Mass Services. The following tasks were solved in the article: formulation of the researched System of Mass Services; determination of components, criteria of kinship of System of Mass Services with their software models; general overview of concurrency as a mathematical model; a description of the approaches and tools of the Go programming language. The following methods are used: Go programming language and its tools, concurrency, parallel execution. The following results were obtained: the researched task of mass service was formulated; criteria for comparing the components of System of Mass Services with the Go programming language toolkit were formed; an analysis of the feasibility of using the Go programming language for modeling System of Mass Services was carried out; received further development of tools for computer simulation of System of Mass Services; the application of concurrency approaches, their implementation in the Go programming language, to the modeling of System of Mass Services is proposed. Conclusions: The Go programming language is a very successful technology for modeling System of Mass Services. Its philosophy, way of working, as well as the built-in toolset provide ample opportunities for modeling various System of Mass Services. The use of this language is appropriate and allows to bring the behavior of the program closer to the simulated process, simplify implementation, and reduce the time required for data processing. There are great prospects for the further implementation of a software product implemented in the Go language in the field of mass service process modeling.
References
Список літератури
Литвинов А.Л. Теорія систем масового обслуговування. Харків: ХНУМГ ім. О.М. Бекетова, 2018. 141 с.
Borovkov A. Stochastic Processes in Queueing Theory. Translate by K.Wickwire. New York: Springer-Verlag, 1976. 280 p. DOI: https://doi.org/10.1007/978-1-4612-9866-3
Chabbi M., Ramanathan M.K. A study of real-world data races in Golang. PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, San Diego, 13–17 June 2022 / Special Inter. Group on Program. Lang. SIGPLAN. New York, 2022. P. 474–489. DOI: https://doi.org/10.1145/3519939.3523720
Zeifman A.I. Quasi-Markov Processes and Description of Some Models of Queueing Theory. IFAC Proceedings Volumes. 1986. Vol. 19. No. 5. P. 445–449. DOI: https://doi.org/10.1016/S1474-6670(17)59840-7
Hoare А. Communicating sequential processes. New Jersey: Prentice Hall, 1985. 235 p. DOI: https://doi.org/10.1145/359576.359585
Yunfei Liu EMsFEM based concurrent topology optimization method for hierarchical structure with multiple substructures/ Yunfei Liu et al. Computer Methods in Applied Mechanics and Engineering. 2024. Vol. 418. Part A. 116549. P. 1–26. DOI: https://doi.org/10.1016/j.cma.2023.116549
C. A. R. Hoare. Communicating sequential processes. Communications of the ACM. 1978. Vol. 21. No 8. P. 666–677. DOI: https://doi.org/10.1145/359576.359585
Sufyan bin U. Mastering GoLang: A Beginner's Guide. Boca Raton: CRC Press, 2022. 298 p. DOI: https://doi.org/10.1201/9781003310457
Fava D., Steffen M. Ready, set, Go!: Data-race detection and the Go language. Science of Computer Programming. 2020. Vol. 195. 102473. P.1–23. DOI: https://doi.org/10.1016/j.scico.2020.102473
Sottile M., Mattson T., Rasmussen C. Introduction to Concurrency in Programming Languages. New York: Chapman and Hall/CRC, 2009. 344 p. DOI: https://doi.org/10.1201/b17174
Sufyan bin U. GoLang: The Ultimate Guide. Boca Raton: CRC Press, 2022. 366 p. DOI: https://doi.org/10.1201/9781003309055
Bowman H., Gomez R. Concurrency Theory: Calculi an Automata for Modelling Untimed and Timed Concurrent Systems. London: Springer-Verlag, 2006. 422 p. DOI: https://doi.org/10.1007/1-84628-336-1
Zhang D., Qi P., Zhang Y. GoDetector: Detecting Concurrent Bug in Go. IEEE Access. 2021. Vol. 9. P. 136302–136312. DOI: https://doi.org/10.1109/ACCESS.2021.3116027
Donovan A. A. A., Kernighan B. W. The Go programming language. New York: Addison-Wesley Professional, 2015. 400 p.
Pontelli E., Gupta G. On the duality between or-parallelism and and-parallelism in logic programming. 1st International EURO-PAR Conference on Parallel Processing: EURO-PAR 199. Stockholm, 29–31 aug. 1995. Lecture Notes in Computer Science. Vol 966. Springer, Berlin. 2005. P. 43–54. DOI: https://doi.org/10.1007/BFb0020454
Komendantskaya E., Schmidt M., Heras J. Exploiting Parallelism in Coalgebraic Logic Programming. Electronic Notes in Theoretical Computer Science. 2014. Vol. 303. P. 121–148. DOI: https://doi.org/10.1016/j.entcs.2014.02.007
Whitney J., Gifford C., Pantoja M. Distributed execution of communicating sequential process-style concurrency: Golang case study. The Journal of Supercomputing. 2019. Vol. 75. No 3. P. 1396–1409. DOI: https://doi.org/10.1007/s11227-018-2649-2
References
Lytvynov, A. (2018), Queuing Theory System, [Teoriia system masovoho obsluhovuvannia], KhNUMH im. O.M. Beketova, Kharkiv, 141 p.
Borovkov, A. (1976), Stochastic Processes in Queueing Theory. Translate by K.Wickwire, Springer-Verlag, New York, 280 p. DOI: https://doi.org/10.1007/978-1-4612-9866-3
Chabbi, M., Ramanathan, M. (2022), "A study of real-world data races in Golang", PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, 13–17 June 2022, San Diego. Special Inter. Group on Program. Lang. SIGPLAN, New York, P. 474–489. DOI: https://doi.org/10.1145/3519939.3523720
Zeifman, A. (1986), "Quasi-Markov Processes and Description of Some Models of Queueing Theory", IFAC Proceedings Volumes, Vol. 19, No. 5, P. 445–449. DOI: https://doi.org/10.1016/S1474-6670(17)59840-7
Hoare, A. (1985), Communicating sequential processes, Prentice Hall, New Jersey. 235 p. DOI: https://doi.org/10.1145/359576.359585
Liu, Y. (2024), "EMsFEM based concurrent topology optimization method for hierarchical structure with multiple substructures"/ Liu, Y. et al., Computer Methods in Applied Mechanics and Engineering, Vol. 418, Part A, 116549, P. 1–26. DOI: https://doi.org/10.1016/j.cma.2023.116549
Hoare, A. (1978), "Communicating sequential processes", Communications of the ACM, Vol. 21, No 8, P. 666–677. DOI: https://doi.org/10.1145/359576.359585
Sufyan, bin U. (2022), Mastering GoLang: A Beginner's Guide, CRC Press, Boca Raton, 298 p. DOI: https://doi.org/10.1201/9781003310457
Fava, D., Steffen, M. (2020), "Ready, set, Go!: Data-race detection and the Go language", Science of Computer Programming, Vol. 195, 102473, P.1–23. DOI: https://doi.org/10.1016/j.scico.2020.102473
Sottile, M., Mattson, T., Rasmussen, C. (2009), Introduction to Concurrency in Programming Languages, Chapman and Hall/CRC, New York, 344 p. DOI: https://doi.org/10.1201/b17174
Sufyan, bin U. (2022), GoLang: The Ultimate Guide, CRC Press, Boca Raton, 366 p. DOI: https://doi.org/10.1201/9781003309055
Bowman, H., Gomez, R. (2006), Concurrency Theory: Calculi an Automata for Modelling Untimed and Timed Concurrent Systems, Springer-Verlag, London, 422 p. DOI: https://doi.org/10.1007/1-84628-336-1
Zhang, D., Qi, P., Zhang, Y. (2021), "GoDetector: Detecting Concurrent Bug in Go", IEEE Access, Vol. 9, P. 136302–136312. DOI: https://doi.org/10.1109/ACCESS.2021.3116027
Donovan, A., Kernighan, B. (2015), The Go programming language, Addison-Wesley Professional, New York, 400 p.
Pontelli, E., Gupta, G. (2005), "On the duality between or-parallelism and and-parallelism in logic programming", 1st International EURO-PAR Conference on Parallel Processing: EURO-PAR 199, Stockholm, 29–31 aug. 1995. Lecture Notes in Computer Science, vol 966, Springer, Berlin, P. 43-54. DOI: https://doi.org/10.1007/BFb0020454
Komendantskaya, E., Schmidt, M., Heras, J. (2014), "Exploiting Parallelism in Coalgebraic Logic Programming", Electronic Notes in Theoretical Computer Science, Vol. 303, P. 121–148. DOI: https://doi.org/10.1016/j.entcs.2014.02.007
Whitney, J., Gifford, C., Pantoja, M. (2019), "Distributed execution of communicating sequential process-style concurrency: Golang case study", The Journal of Supercomputing, Vol. 75, No 3, P. 1396–1409. DOI: https://doi.org/10.1007/s11227-018-2649-2
Downloads
Published
How to Cite
Issue
Section
License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Our journal abides by the Creative Commons copyright rights and permissions for open access journals.
Authors who publish with this journal agree to the following terms:
Authors hold the copyright without restrictions and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0) that allows others to share the work with an acknowledgment of the work's authorship and initial publication in this journal.
Authors are able to enter into separate, additional contractual arrangements for the non-commercial and non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgment of its initial publication in this journal.
Authors are permitted and encouraged to post their published work online (e.g., in institutional repositories or on their website) as it can lead to productive exchanges, as well as earlier and greater citation of published work.