Kirjasto - Tampereen teknillinen yliopisto

Implementing a Multithreading Framework in C++

Show simple item record

Title: Implementing a Multithreading Framework in C++
Author: Maaranen, Tero
Alternative title: Monisäikeistävän C++-ohjelmistokehyksen toteuttaminen
Abstract: Monisäikeistä ohjelmistoa suunniteltaessa ja toteutettaessa on usein järkevää aloittaa luomalla ohjelmistokehys, joka hallinnoi toistuvia, hankalasti hahmotettavia ja monimutkaisia rinnakkaisuuteen liittyviä toimenpiteitä. Kehyksen luonti saattaa itse asiassa olla ohjelmistoprojektin aikaa vievin osuus, ja itse toiminnallisuuden lisäys onkin vain viimeinen silaus muuten valmiiseen järjestelmään.

Tässä esitellään säikeidenväliseen kommunikointiin tarkoitetun kehyksen luontiprosessia ja sen toteutukseen vaikuttaneita syitä. Tavoitteena oli toteuttaa pienessä mittakaavassa toimiva mutta mahdollisimman monta käyttötarkoitusta tukeva ohjelmistokehys, joka ei kuitenkaan olisi tarpeettoman tehoton. Lisäksi tarkoitus oli pyrkiä kehittämään monisäikeisten ohjelmien ymmärrettävyyttä ja vähentää niiden monimutkaisuutta. Ohjelman varsinainen käyttötarkoitus on mahdollistaa monisäikeisen pelimoottorin vakaa ydin.

Niinkin monipuolisessa aiheessa kuin monisäikeinen ohjelmointi ei ole olemassa yleispätevää ratkaisua, joka selvittää kaikki kehittämisongelmat. On kuitenkin mahdollista löytää tiettyjä toimintatapoja, joita käyttämällä voidaan merkittävästi helpottaa osaa ongelmista.

Työssä on keskitytty täysin yksiprosessiseen ohjelmistoon, mutta muokkaamalla ja uudelleenkäyttämällä olemassa olevia rajapintoja, kehyksen voi saada toimimaan useiden prosessien välisessä kommunikoinnissa.

Työssä on mitattu tehokkuutta perinteisestä monisäikeisestä ohjelmasta ja vastaavan toiminnallisuuden sisältävästä ohjelmistokehystä käyttävästä ohjelmasta. Tuloksista saa käsityksen, että kehystä käytettäessä tehokkuus on heikentynyt merkittävästi. Lisäksi erityisesti pienissä ohjelmissa ohjelmiston lähdekoodinluettavuus - hieman yllättäen - kärsii monimutkaisemmasta rakenteesta ja kehyksen käytön aiheuttamasta lisästä. Voidaan kuitenkin olettaa, että suuremmissa ohjelmistoprojekteissa, joissa perinteinen monisäikeinen ohjelmisto saattaa muodostua äärimmäisen monimutkaiseksi, ohjelmistokehys selkeyttää ohjelmaa tehokkuuden kustannuksella.

When designing and implementing multithreaded software, it is often justified to start by building a robust framework that handles the repetetive and complicated procedures required of a multithreaded application. This can be the most time consuming process, and adding the actual functionality on top of the framework can be considered only as the final touch.

In the thesis work, a multithreading framework has been designed and implemented from scratch. The goal was to build a relatively small framework which could be used for practically any multithreaded program. Yet, it was attempted to keep in mind some of the most important aspects of multithreaded programming, such as understandability, complexity and performance.

For such a complex topic as multithreaded programming, there is no “silver bullet” approach to solve all problems, but one approach can still fit to many needs. The implemented framework concentrates on single-process applications, but by reimplementing some parts of the framework, also inter-process communication can be made possible. The actual intended use for the framework is to form the core for a multithreaded game engine.

Performance analysis is provided in small scale by implementing well-knownalgorithms. The analysis shows that performance is clearly degraded compared to conventional multithreading solutions, and that, especially in small projects, code readability suffers from the more complex nature of framework usage. This implies that frameworks suits larger projects better, as in such projects the conventional approach tends to grow into an unmaintainable and messy source code.

Issue date: 2011-08-17
URN: http://URN.fi/URN:NBN:fi:tty-2011082514770
Publication type: Diplomityö
Language: en
Pages: 51 p. + app. 6 p.
Instructor: Systä, Tarja
Examiner: Koskimies, KaiSystä, Tarja
University: Tampereen teknillinen yliopisto
Faculty: Tieto- ja sähkötekniikan tiedekunta – Faculty of Computing and Electrical Engineering
Department: Ohjelmistotekniikan laitos – Department of Software Systems
Degree Programme: Tietotekniikan koulutusohjelma
Copyright: This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.

Files in this item

Files Size Format View
maaranen.pdf 589.5Kb PDF View/Open

This item appears in the following Collection(s)

Show simple item record

Search TUT DPub


Advanced Search

Browse

My Account

Statistics