Index: /trunk/Mars/mcore/zofits.h
===================================================================
--- /trunk/Mars/mcore/zofits.h	(revision 17227)
+++ /trunk/Mars/mcore/zofits.h	(revision 17228)
@@ -25,5 +25,12 @@
 class zofits : public ofits
 {
-    public:
+        template<class S>
+        struct QueueMin : std::list<S>
+        {
+            typename std::list<S>::iterator begin()
+            {
+                return min_element(std::list<S>::begin(), std::list<S>::end());
+            }
+        };
 
         struct WriteTarget
@@ -33,4 +40,5 @@
                 return tile_num < other.tile_num;
             }
+
             uint32_t tile_num;
             uint32_t size;
@@ -40,8 +48,10 @@
         struct CompressionTarget
         {
+            /*
             bool operator < (const CompressionTarget& other)
             {
                 return target < other.target;
-            }
+            }*/
+
             shared_ptr<MemoryChunk> src;
             shared_ptr<MemoryChunk> transposed_src;
@@ -50,5 +60,5 @@
         };
 
-
+public:
         //constructors
         zofits(uint32_t numTiles=1000,
@@ -56,5 +66,5 @@
                uint64_t maxUsableMem=0) : ofits(),
                                           fMemPool(0, maxUsableMem),
-                                          fWriteToDiskQueue(bind(&zofits::WriteBufferToDisk, this, placeholders::_1), true, false)
+                                          fWriteToDiskQueue(bind(&zofits::WriteBufferToDisk, this, placeholders::_1), false)
         {
             InitMemberVariables(numTiles, rowPerTile, maxUsableMem);
@@ -67,5 +77,5 @@
                uint64_t maxUsableMem=0) : ofits(fname),
                                           fMemPool(0, maxUsableMem),
-                                          fWriteToDiskQueue(bind(&zofits::WriteBufferToDisk, this, placeholders::_1), true, false)
+                                          fWriteToDiskQueue(bind(&zofits::WriteBufferToDisk, this, placeholders::_1), false)
         {
             InitMemberVariables(numTiles, rowPerTile, maxUsableMem);
@@ -578,5 +588,5 @@
 
             //cannot be const, as resize does not want it that way
-            Queue<CompressionTarget> queue(bind(&zofits::CompressBuffer, this, placeholders::_1), false, false);
+            Queue<CompressionTarget> queue(bind(&zofits::CompressBuffer, this, placeholders::_1), false);
 
             //shrink
@@ -875,6 +885,6 @@
 
         //thread related stuff
-        vector<Queue<CompressionTarget>> fCompressionQueues;
-        Queue<WriteTarget>               fWriteToDiskQueue;
+        vector<Queue<CompressionTarget>>          fCompressionQueues;
+        Queue<WriteTarget, QueueMin<WriteTarget>> fWriteToDiskQueue;
 
         //thread related stuff
