Please use this identifier to cite or link to this item: https://research.matf.bg.ac.rs/handle/123456789/2342
DC FieldValueLanguage
dc.contributor.authorČukić, Ivanen_US
dc.date.accessioned2025-08-21T13:23:25Z-
dc.date.available2025-08-21T13:23:25Z-
dc.date.issued2016-12-01-
dc.identifier.issn00380644-
dc.identifier.urihttps://research.matf.bg.ac.rs/handle/123456789/2342-
dc.description.abstractThere is a big class of problems that requires writing programs in an asynchronous manner. Cloud computing, service-oriented architectures, multi-core and heterogeneous systems all require programs to be written with asynchronous components. The necessity of concurrency and asynchronous execution brings in the added complexity of the inversion of control into the system, either through message passing or through event processing. In this paper, we introduce explicit programming language support for asynchronous programming that completely hides inversion of control. The presented programming model defines a common abstraction of the different types of tasks, both synchronous and asynchronous. It defines common imperative control constructs equivalent to those of the host programming language, along with a few more advanced ones for transactional and parallel execution that can universally work for any task type. It allows the programmer to implement the logic of an asynchronous system in a natural way by writing simple, seemingly, synchronous imperative code. We will show that the programs written using this approach are easier to understand by programmers. They are also easier to design automated tests for, and for performing computer-based static analysis of the program logic. The principles behind this approach were tested in a couple of real-world systems with worldwide user base. Our experience shows that it makes the complex code with a lot of interdependencies between asynchronously executed tasks easy to write and reason about. Copyright © 2016 John Wiley & Sons, Ltd.en_US
dc.language.isoenen_US
dc.publisherWilleyen_US
dc.relation.ispartofSoftware Practice and Experienceen_US
dc.subjectasynchronous task-oriented designen_US
dc.subjectC++11en_US
dc.subjectcontinuation monaden_US
dc.subjectcoordinationen_US
dc.subjectdomain-specific languagesen_US
dc.subjectfunctional programmingen_US
dc.titleA continuation-based task programming model for C++: design of the Causeway libraryen_US
dc.typeArticleen_US
dc.identifier.doi10.1002/spe.2395-
dc.identifier.scopus2-s2.0-84960971268-
dc.identifier.isi000387367600002-
dc.identifier.urlhttps://api.elsevier.com/content/abstract/scopus_id/84960971268-
dc.relation.issn0038-0644en_US
dc.description.rankM22en_US
dc.relation.firstpage1617en_US
dc.relation.lastpage1656en_US
dc.relation.volume46en_US
dc.relation.issue12en_US
item.openairetypeArticle-
item.fulltextNo Fulltext-
item.languageiso639-1en-
item.cerifentitytypePublications-
item.openairecristypehttp://purl.org/coar/resource_type/c_18cf-
item.grantfulltextnone-
crisitem.author.deptInformatics and Computer Science-
crisitem.author.orcid0000-0001-5358-0828-
Appears in Collections:Research outputs
Show simple item record

Google ScholarTM

Check

Altmetric

Altmetric


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.