Changeset: 0722d5f0ee79 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0722d5f0ee79
Modified Files:
        gdk/gdk_hash.c
        gdk/gdk_imprints.c
        gdk/gdk_orderidx.c
        gdk/gdk_storage.c
        gdk/gdk_system.c
        gdk/gdk_system.h
Branch: Aug2018
Log Message:

Backed out changeset 0e7170a5db36.
This was not the problem that caused MacOSX to hang.
Also, not waiting for the sync threads is potentially dangerous.


diffs (113 lines):

diff --git a/gdk/gdk_hash.c b/gdk/gdk_hash.c
--- a/gdk/gdk_hash.c
+++ b/gdk/gdk_hash.c
@@ -582,7 +582,7 @@ BAThash(BAT *b)
                        MT_Id tid;
                        BBPfix(b->batCacheid);
                        if (MT_create_thread(&tid, BAThashsync, b,
-                                            MT_THR_REALLY_DETACHED) < 0) {
+                                            MT_THR_DETACHED) < 0) {
                                /* couldn't start thread: clean up */
                                BBPunfix(b->batCacheid);
                        }
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -521,7 +521,7 @@ BATimprints(BAT *b)
                    !b->theap.dirty) {
                        MT_Id tid;
                        BBPfix(b->batCacheid);
-                       if (MT_create_thread(&tid, BATimpsync, b, 
MT_THR_REALLY_DETACHED) < 0)
+                       if (MT_create_thread(&tid, BATimpsync, b, 
MT_THR_DETACHED) < 0)
                                BBPunfix(b->batCacheid);
                }
        }
diff --git a/gdk/gdk_orderidx.c b/gdk/gdk_orderidx.c
--- a/gdk/gdk_orderidx.c
+++ b/gdk/gdk_orderidx.c
@@ -156,7 +156,7 @@ persistOIDX(BAT *b)
            !b->theap.dirty) {
                MT_Id tid;
                BBPfix(b->batCacheid);
-               if (MT_create_thread(&tid, BATidxsync, b, 
MT_THR_REALLY_DETACHED) < 0)
+               if (MT_create_thread(&tid, BATidxsync, b, MT_THR_DETACHED) < 0)
                        BBPunfix(b->batCacheid);
        } else
                ALGODEBUG fprintf(stderr, "#persistOIDX(" ALGOBATFMT "): NOT 
persisting order index\n", ALGOBATPAR(b));
@@ -463,7 +463,7 @@ GDKmergeidx(BAT *b, BAT**a, int n_ar)
            b->batInserted == b->batCount) {
                MT_Id tid;
                BBPfix(b->batCacheid);
-               if (MT_create_thread(&tid, BATidxsync, b, 
MT_THR_REALLY_DETACHED) < 0)
+               if (MT_create_thread(&tid, BATidxsync, b, MT_THR_DETACHED) < 0)
                        BBPunfix(b->batCacheid);
        } else
                ALGODEBUG fprintf(stderr, "#GDKmergeidx(%s): NOT persisting 
index\n", BATgetId(b));
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -695,7 +695,7 @@ BATmsync(BAT *b)
                        arg->h = &b->theap;
                        BBPfix(b->batCacheid);
 #ifdef MSYNC_BACKGROUND
-                       if (MT_create_thread(&tid, BATmsyncImplementation, arg, 
MT_THR_REALLY_DETACHED) < 0) {
+                       if (MT_create_thread(&tid, BATmsyncImplementation, arg, 
MT_THR_DETACHED) < 0) {
                                /* don't bother if we can't create a thread */
                                BBPunfix(b->batCacheid);
                                GDKfree(arg);
@@ -711,7 +711,7 @@ BATmsync(BAT *b)
                        arg->h = b->tvheap;
                        BBPfix(b->batCacheid);
 #ifdef MSYNC_BACKGROUND
-                       if (MT_create_thread(&tid, BATmsyncImplementation, arg, 
MT_THR_REALLY_DETACHED) < 0) {
+                       if (MT_create_thread(&tid, BATmsyncImplementation, arg, 
MT_THR_DETACHED) < 0) {
                                /* don't bother if we can't create a thread */
                                BBPunfix(b->batCacheid);
                                GDKfree(arg);
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -267,7 +267,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
        w->func = f;
        w->arg = arg;
        w->flags = 0;
-       if (d == MT_THR_DETACHED || d == MT_THR_REALLY_DETACHED)
+       if (d == MT_THR_DETACHED)
                w->flags |= DETACHED;
        EnterCriticalSection(&winthread_cs);
        w->next = winthreads;
@@ -583,10 +583,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
        p->func = f;
        p->arg = arg;
        p->exited = 0;
-       if (d == MT_THR_REALLY_DETACHED) {
-               pf = thread_starter_simple;
-               newtp = &newt;
-       } else if (d == MT_THR_DETACHED) {
+       if (d == MT_THR_DETACHED) {
                pf = thread_starter;
                newtp = &p->tid;
        } else {
@@ -601,9 +598,7 @@ MT_create_thread(MT_Id *t, void (*f) (vo
 #else
                *t = (MT_Id) (((size_t) *newtp) + 1);   /* use pthread-id + 1 */
 #endif
-               if (d == MT_THR_REALLY_DETACHED) {
-                       pthread_detach(newt);
-               } else if (d == MT_THR_DETACHED) {
+               if (d == MT_THR_DETACHED) {
                        pthread_mutex_lock(&posthread_lock);
                        p->next = posthreads;
                        posthreads = p;
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -107,7 +107,7 @@ gdk_export int GDKdebug;
  */
 typedef size_t MT_Id;          /* thread number. will not be zero */
 
-enum MT_thr_detach { MT_THR_JOINABLE, MT_THR_DETACHED, MT_THR_REALLY_DETACHED 
};
+enum MT_thr_detach { MT_THR_JOINABLE, MT_THR_DETACHED };
 
 gdk_export int MT_create_thread(MT_Id *t, void (*function) (void *),
                                void *arg, enum MT_thr_detach d);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to