Threads und die Tücken – Frank Illenberger’s Beitrag auf der Macoun 2014

Threads und die Tücken

Nach einer kleinen Einführung in Threads zeigte Frank Illenberger von den ProjectWizards, welche Probleme man mit der Nebenläufigkeit haben kann, wie man sie vermeidet und wie man Grand Central Dispatch (GCD) als Retter in der Not einsetzen kann.
Das Problem: Das Betriebssystem verteilt die CPU-Kraft aller Kerne auf die einzelnen Threads und der Entwickler hat wenig Kontrolle, was wo läuft. Fehler in Threads lassen sich schwer lokalisieren, da sie nicht-reproduzierbar auftreten können. Dennoch sind Hintergrundabläufe enorm wichtig, etwa um asynchrone Netzwerkanfragen zu erledigen oder um zu verhindern, dass der zentrale Mainthread blockiert wird und nicht mehr auf Tastatur- und Mausereignisse reagieren kann.

An einem Beispielprogramm zeigte Illenberger einige häufige Probleme und machte Lösungsvorschläge: Man sollte gemeinsame Daten möglichst vermeiden und unveränderliche Objekte bevorzugen, wo immer es geht. Obendrein gilt es, Datenbanken zu verwenden oder Locks/Mutex-Konstruktionen einzusetzen. Bei Locks sind allerdings auch die gefürchteten Deadlocks möglich, das passiert, wenn zwei Threads gegenseitig auf sich warten.
Mit Dispatch Queues als Teil von Grand Central Dispatch kann man das vermeiden.
Dabei verwaltet Apples Framework den Thread Pool selbst; der Entwickler hantiert nur mit Codeblöcken.
Blöcke dürfen Abhängigkeiten haben und einige Blöcke können exklusiv laufen. Ein Deadlock ist dann unmöglich, weil nur ein Block zeitgleich läuft. Quintessenz: Threads sind oft nötig, aber man sollte sehr vorsichtig damit umgehen und möglichst auf GCD setzen.

Artikel: Threads und die Tücken

Quelle: Heise.de – Mac&i (Mac & i > Artikel > Macoun 2014: iOS 8, Yosemite und Swift > Threads und die Tücken)

Permalink: http://heise.de/-2405151