namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:parallelverarbeitung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
kennen:parallelverarbeitung [2017-10-08 15:21]
rrichter [Versprechen]
kennen:parallelverarbeitung [2018-04-27 09:28] (aktuell)
rrichter [Verklemmung]
Zeile 140: Zeile 140:
 </​code>​ </​code>​
 Die Funktionen ''​std::​lock(sperrenliste)''​ und ''​std::​try_lock(sperrenliste)''​ Die Funktionen ''​std::​lock(sperrenliste)''​ und ''​std::​try_lock(sperrenliste)''​
-erlangen alle Sperren der Liste unabhängig von der Reihenfolge ohne Verklemmungsrisiko:​+erlangen alle Sperren der Liste unabhängig von der Reihenfolge ohne Verklemmungsrisiko
 +Mit der Klasse ''​std::​scoped_lock<​Mutexes...>''​ gelingt dies noch einfacher:
 <code cpp> <code cpp>
 void give(Account&​ from, Account&​ to, double money) void give(Account&​ from, Account&​ to, double money)
 { {
-  std::​unique_lock<​std::​mutex>​ fromLock(from.mutex,​ std::​defer_lock);​ +  ​// std::​unique_lock<​std::​mutex>​ fromLock(from.mutex,​ std::​defer_lock);​ 
-  std::​unique_lock<​std::​mutex>​ toLock ​ (to.mutex, ​  ​std::​defer_lock);​ +  ​// std::​unique_lock<​std::​mutex>​ toLock ​ (to.mutex, ​  ​std::​defer_lock);​ 
-  std::​lock(fromLock,​ toLock); +  ​// std::​lock(fromLock,​ toLock); 
-  ​+  ​std::​scoped_lock lock{from.mutex,​ to.mutex}; ​ // ab c++17
   from.take(money);​   from.take(money);​
   to.add(money);​   to.add(money);​
kennen/parallelverarbeitung.txt · Zuletzt geändert: 2018-04-27 09:28 von rrichter