improved thread safety of the LRUCache and fixed a bug in for loops

--HG--
branch : trunk
diff --git a/jinja2/utils.py b/jinja2/utils.py
index 313a53e..9d46639 100644
--- a/jinja2/utils.py
+++ b/jinja2/utils.py
@@ -469,13 +469,13 @@
         """Iterate over all values in the cache dict, ordered by
         the most recent usage.
         """
-        return reversed(self._queue)
+        return reversed(tuple(self._queue))
 
     def __reversed__(self):
         """Iterate over the values in the cache dict, oldest items
         coming first.
         """
-        return iter(self._queue)
+        return iter(tuple(self._queue))
 
     __copy__ = copy