Ein Modul ist thread-sicher, wenn es garantiert, dass es seine Invarianten angesichts der Verwendung durch mehrere Threads und der Gleichzeitigkeit beibehalten kann.
Hier kann ein Modul eine Datenstruktur, eine Klasse, ein Objekt, eine Methode/Prozedur oder eine Funktion sein. Im Grunde ein Stück Code und zugehörige Daten mit einem bestimmten Umfang.
Die Garantie kann möglicherweise auf bestimmte Umgebungen wie eine bestimmte CPU-Architektur beschränkt sein, muss aber für diese Umgebungen gelten. Wenn es keine explizite Abgrenzung der Umgebungen gibt, wird in der Regel davon ausgegangen, dass sie für alle Umgebungen gilt, in denen der Code kompiliert und ausgeführt werden kann.
Thread-unsichere Module Mai bei Multithreading und gleichzeitiger Nutzung korrekt funktionieren, aber das ist oft mehr Glück und Zufall als sorgfältiges Design. Selbst wenn ein Modul bei Ihnen nicht kaputt geht, kann es kaputt gehen, wenn Sie es in eine andere Umgebung verschieben.
Multithreading-Fehler sind oft schwer zu beheben. Einige von ihnen treten nur gelegentlich auf, während andere aggressiv auftreten - auch dies kann umgebungsspezifisch sein. Sie können sich als subtil falsche Ergebnisse oder Deadlocks manifestieren. Sie können Datenstrukturen auf unvorhersehbare Weise durcheinander bringen und andere, scheinbar unmögliche Fehler in anderen, entfernten Teilen des Codes verursachen. Sie können sehr anwendungsspezifisch sein, so dass es schwer ist, eine allgemeine Beschreibung zu geben.
5 Stimmen
Normalerweise bedeutet "thread safe", was immer die Person, die den Begriff verwendet, denkt, dass es bedeutet, zumindest für diese Person. Als solches ist es kein sehr nützliches Sprachkonstrukt - man muss viel, viel spezifischer sein, wenn man über das Verhalten von threaded Code spricht.
8 Stimmen
Duplizieren?: stackoverflow.com/questions/261683/
0 Stimmen
@dave Sorry, ich habe versucht zu suchen, aber aufgegeben...trotzdem danke...
1 Stimmen
Ein Code, der nicht auftaucht
Race-Condition