Gemäß der OpenMP-Spezifikation muss auf "True" gesetzt werden, damit Anweisungen wie #pragma omp cancel
keine Auswirkung haben. Ich muss die Abbruchfunktion aktivieren, damit mein Programm ordnungsgemäß funktioniert (eine Schaltfläche zum Abbrechen der GUI, die die Löschung auslöst, wenn es darauf ankommt).Freigabe von Innenprogramm aktivieren
Ich versuchte OMP_CANCELLATION
aus dem Programm zu setzen mit
setenv("OMP_CANCELLATION", "true", 1);
als die ersten Zeile des Programms, aber diese Aussage hat keine Wirkung. Wenn ich manuell export OMP_CANCELLATION=true
von einer Shell draußen vor dem Ausführen des Programms, funktioniert die Stornierung ordnungsgemäß.
Kann die Löschung innerhalb des Programms aktiviert werden, ohne dass diese Umgebungsvariable extern gesetzt werden muss?
Vielleicht wird der Wert abgefragt, noch bevor 'main()' läuft? Es gibt einen Thread [hier] (https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/700267), der zumindest darauf hinweist, dass dies möglicherweise nicht möglich ist (obwohl es um FORTRAN geht). –
Es kann sich lohnen, Ihre Frage im OpenMP ARB-Forum http://forum.openmp.org/forum/viewforum.php?f=3 zu stellen. So besteht die Möglichkeit, dass Leute, die mit dem Standard zu tun haben, diese Unterlassung bemerken ... –