Einführung in die Multithreading-Programmierung

Locks stellen ein einfaches Konzept dar, das die grundlegenden Elemente für fast alle Multithreading-Programme liefert. Die Idee, die hinter einem Lock steht, ist unkompliziert: Nur ein Thread kann einen Lock erhalten. Nach Beendigung seiner Aufgabe muss er ihn wieder freigeben. Falls ein anderer Thread versucht, den Lock zu erhalten, muss er bis zur Freigabe warten. Erst dann kann er ihn selbst nutzen und in der Ausführung fortfahren.

Locks lassen sich verwenden, um Bereiche des Codes zu definieren, die zu einer Zeit jeweils nur ein Thread ausführen können (mutual exclusion zones). Dies beseitigt das Problem, dass mehrere Threads gemeinsam genutzte Daten bei unvorhersehbar verschränkter Ausführung korrumpieren.

Hier ein modifiziertes Warteschlangen-Beispiel, das keine Probleme mit Verschränkungen erzeugt.

Damit wurde die neue Variable lock eingeführt. lock.lock() bedeutet, dass der Thread versucht, das Lock zu erhalten, und es dann per lock.unlock() wieder freigibt. Falls ein anderer Thread versucht, eine übernommene Lock-Variable zu erhalten, wartet er, bis diese freigeben ist. Nur ein Thread darf die Überprüfung der Größe und das Entfernen zur selben Zeit durchführen. Dadurch gibt es keine Probleme mehr mit verschränkten Threads.

Es gilt zu beachten, dass nicht einfach die gesamte dequeue-Methode in eine mutual exclusion zone umgewandelt wird. Wenn der Thread in die Schleife eintritt, würde er sonst das Lock niemals freigeben und einem anderen Thread erlauben, der Warteschlange etwas hinzuzufügen. Daraus resultiert eine Endlosschleife, in Threading-Kreisen deadlock genannt.

Page: 1 2 3 4 5 6

ZDNet.de Redaktion

Recent Posts

So günstig & effizient war Content Produktion noch nie: Neues Content System erobert deutschen Markt

Kontinuierliche Content Produktion und Markenaufbau sind essentieller Pfeiler von langfristigen Unternehmenserfolg. Das ist mittlerweile auch…

4 Tagen ago

Lenovo übertrifft die Erwartungen und hebt Prognose an

KI-Funktionen beschleunigen die Erholung des PC-Markts. Der Nettogewinn legt um 44 Prozent zu, der Umsatz…

5 Tagen ago

Bedrohungsakteure betten Malware in macOS-Flutter-Anwendungen ein

Googles App-Entwickler-Kit dient der Tarnung des schädlichen Codes. Der Sicherheitsanbieter Jamf hält die Schadsoftware für…

5 Tagen ago

CopyRhadamantys greift weltweit Unternehmen an

Ausgeklügelte Phishing-Kampagne verwendet eine weiterentwickelte Version der Rhadamanthys-Stealer-Malware.

1 Woche ago

Facebook Marketplace: EU verhängt Geldbuße von fast 800 Millionen Euro gegen Meta

Die EU-Kommission kritisiert die Verknüpfung von Facebook und dem hauseigenen Online-Kleinanzeigendienst. Sie sieht darin einen…

1 Woche ago

Umfrage: Angestellte in Deutschland unterschätzen NIS-2-Richtlinie

Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…

1 Woche ago