Changeset: c97e597a76d8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c97e597a76d8
Modified Files:
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_resource.h
Branch: default
Log Message:
Use proper atomic instructions to access variable.
diffs (42 lines):
diff --git a/monetdb5/mal/mal_resource.c b/monetdb5/mal/mal_resource.c
--- a/monetdb5/mal/mal_resource.c
+++ b/monetdb5/mal/mal_resource.c
@@ -164,7 +164,7 @@ MALadmission(lng argclaim, lng hotclaim)
* By keeping the query start time in the client record we can delay
* them when resource stress occurs.
*/
-ATOMIC_TYPE mal_running;
+volatile ATOMIC_TYPE mal_running;
#ifdef ATOMIC_LOCK
MT_Lock mal_runningLock MT_LOCK_INITIALIZER("mal_runningLock");
#endif
@@ -194,7 +194,7 @@ MALresourceFairness(lng usec)
clk = clk > FAIRNESS_THRESHOLD? FAIRNESS_THRESHOLD:clk;
/* always keep one running to avoid all waiting */
- while (clk > DELAYUNIT && users > 1 && mal_running > (ATOMIC_TYPE)
GDKnr_threads && rss > MEMORY_THRESHOLD) {
+ while (clk > DELAYUNIT && users > 1 && ATOMIC_GET(mal_running,
mal_runningLock) > (ATOMIC_TYPE) GDKnr_threads && rss > MEMORY_THRESHOLD) {
if ( delayed++ == 0){
PARDEBUG mnstr_printf(GDKstdout, "#delay
initial ["LLFMT"] memory "SZFMT"[%f]\n", clk, rss, MEMORY_THRESHOLD );
PARDEBUG mnstr_flush(GDKstdout);
@@ -218,7 +218,7 @@ MALresourceFairness(lng usec)
size_t
MALrunningThreads(void)
{
- return mal_running;
+ return ATOMIC_GET(mal_running, mal_runningLock);
}
void
diff --git a/monetdb5/mal/mal_resource.h b/monetdb5/mal/mal_resource.h
--- a/monetdb5/mal/mal_resource.h
+++ b/monetdb5/mal/mal_resource.h
@@ -11,7 +11,7 @@
#include "mal_interpreter.h"
#include "gdk_atomic.h"
-mal_export ATOMIC_TYPE mal_running;
+mal_export volatile ATOMIC_TYPE mal_running;
#ifdef ATOMIC_LOCK
mal_export MT_Lock mal_runningLock;
#endif
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list