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