\b;Anweisung \c;synchronized\n; (für Spezialisten)
Eine Methode einer \l;Klasse\u cbot\class; kann als \c;synchronized\n; deklariert werden. Damit wird sichergestellt, dass diese Methode nie von mehr als einem Roboter gleichzeitig ausgeführt wird.

Das folgende Beispiel veranschaulicht das Problem:
\c;
\s;class blocking
\s;{
\s;	static int nb = 33;
\s;	synchronized int inc( )
\s;	{
\s;		int val = nb;
\s;		wait ( 2 );  // wartet 2 Sek.
\s;		nb = nb + 1;
\s;		return val;
\s;	}
\s;}
\n;
Was passiert, wenn zwei Roboter gleichzeitig die Methode \c;inc\n; ausführen würden?
Beide Roboter werden die Anweisung \c;val=nb\n; ausführen und anschließend 2 Sekunden warten, beide werden also \c;val=33\n; haben. Mit \c;synchronized\n; wird der erste Roboter die Ausführung mit \c;val=33\n; beginnen, 2 Sekunden warten und den Wert von \c;nb\n; auf \c;34\n; setzen. Erst wenn der erste Roboter fertig ist, kann der zweite Roboter die Methode \c;inc\n; ausführen, diesmal mit dem Wert \c;val=34\n;.

Sie können mehr als eine Methode einer \l;Klasse\u cbot\class; als \c;syncronized\n; deklarieren. Solange ein Roboter in einer dieser Methoden ist, kann kein anderer Roboter eine andere als \c;syncronized\n; deklarierte Methode derselben Klasse ausführen.

\t;Siehe auch
\c;\l;class\u cbot\class;\n;, \c;\l;static\u cbot\static;\n;
Die \l;CBOT-Sprache\u cbot;, \l;Variablentypen\u cbot\type; und \l;Kategorien\u cbot\category;.
