ich das las: http://en.wikipedia.org/wiki/Thread_safetyThread-Sicherheit mit Heap-Speicher zugewiesen
Ist die folgende Funktion Thread-sicher?
void foo(int y){
int * x = new int[50];
/*...do some stuff with the allocated memory...*/
delete [] x;
}
In dem Artikel heißt es, dass thread-safe Sie nur Variablen aus dem Stapel verwenden können. "Ja wirklich?" Warum? Würde nicht nachfolgenden Aufrufen der oben genannten Funktionsspeicher an anderer Stelle zuweisen?
Edit: Ah. Sieht wie ich diesen Teil des Artikels misread:
Ein Unterprogramm ist einspringende und damit threadsicher, wenn
- die einzigen Variablen aus dem Stapel verwendet sind
(ich nahm es zu
Ein Unterprogramm ist reentrant und damit threadsicher, wenn und nur dann, wenn
- die einzigen Variablen, es sind vom Stapel
, die im Folgenden nach den Antworten verwendet, nicht der Fall ist)
Verwenden Sie 'löschen []' für Arrays nicht 'löschen' –
@Brian: Woops - danke. Ich fügte den Array-Teil hinzu, nachdem ich die Funktion bereits eingegeben hatte, um deutlich zu machen, dass ich Speicher dynamisch zuordnete, vergaß aber, die [] 's hinzuzufügen. +1 :) – Cam
Es ist erstaunlich, die Verbreitung von Wikipedia als Referenz für die Programmierung von Konzepten zu sehen :) – ch0kee