@@ -171,11 +171,10 @@ - (id)main { void *pool; - of_memory_read_barrier(); if (_terminate) return nil; pool = objc_autoreleasePoolPush(); @@ -184,11 +183,10 @@ [_queueCondition lock]; @try { of_list_object_t *listObject; - of_memory_read_barrier(); if (_terminate) { objc_autoreleasePoolPop(pool); return nil; } @@ -195,11 +193,10 @@ listObject = [_queue firstListObject]; while (listObject == NULL) { [_queueCondition wait]; - of_memory_read_barrier(); if (_terminate) { objc_autoreleasePoolPop(pool); return nil; } @@ -210,19 +207,17 @@ [_queue removeListObject: listObject]; } @finally { [_queueCondition unlock]; } - of_memory_read_barrier(); if (_terminate) { objc_autoreleasePoolPop(pool); return nil; } [job perform]; - of_memory_read_barrier(); if (_terminate) { objc_autoreleasePoolPop(pool); return nil; } @@ -229,11 +224,10 @@ objc_autoreleasePoolPop(pool); pool = objc_autoreleasePoolPush(); [_countCondition lock]; @try { - of_memory_read_barrier(); if (_terminate) { objc_autoreleasePoolPop(pool); return nil; } @@ -311,12 +305,10 @@ OFEnumerator *enumerator = [_threads objectEnumerator]; OFThreadPoolThread *thread; while ((thread = [enumerator nextObject]) != nil) thread->_terminate = true; - - of_memory_write_barrier(); } @finally { [_countCondition unlock]; } [_queueCondition broadcast];