Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge

Compileroptimierung für bestimmte codebereiche deaktivieren

Synthetic_codes / 2 Antworten / Flachansicht Nickles

Moinsen allseits. Der Titel sagt eigentlich schon alles, aber hier nochmal mit erklärung:

Es geht darum, die Compileroptimierungen für einen bestimmten codebereich zu deaktivieren. Insbesorndere habe ich eine Stelle in einem Programm in dem 50sec gewartet werden muss. dort habe ich es per schleife gelöst, dass alle 5 sec eine meldung ausgegeben wird, wie lange noch zu warten ist:

for(ct=0;ct<10;ct++)
{
printf("Noch %d sekunden.\n",50-(ct*5));
sleep(5);
}

Der Compiler "optimiert" an dieser stelle alles so zusammen, dass 50 sec gewartet wird, und dann alle printf-meldungen ausgegeben werden. Da ich an anderer stelle auf diese optimierungen angewiesen bin, möchte ich selbige aber nur teilweise anwenden. Btw, Compiler ist der gcc-4.3

Noch eine 2. Frage: Mir ist aufgefallen, dass C bei funktionsaufrufen immer den selben datenbereich verwendet. sprich, habe ich eine funktion, in der eine Variable definiert wird, so ist diese beim nächsten aufruf der Funktion noch gesetzt. Wenn ich (p)Threads verwende, wird dann für jeden Thread ein neuer Datenbereich angelegt? oder muss ich hier zwangsläufig mit dynamischer Speicherzuweisung arbeiten?

'); DROP TABLE users;--
bei Antwort benachrichtigen
Synthetic_codes Mdl „Zur 2. Frage: Nichtstatische Variablen, die innerhalb einer Funktion definiert...“
Optionen

jetzed wo dus sagst springts mich an. trotzdem thx für die erläuterung.

Btw, o.g. situation ist mir ja auch nur aufgefallen, weil ich bei einem kleinen test eines programms schlampig war und vergessen hatte die variable beim beginn der funktion entsprechend zu initialisieren.

Das mit den globalen variablen und multithreading sollte man sich übrigens ganz abgewöhnen(allgemein globals...) Dafür kann man dem thread ja parameter übergeben, bzw die threads synchronisieren.

'); DROP TABLE users;--
bei Antwort benachrichtigen