Sha256: d9fa73b7552dbe1e0af989b31b37c300d930764bee194a0a16775a99b51ae198
Contents?: true
Size: 998 Bytes
Versions: 3
Compression:
Stored size: 998 Bytes
Contents
# utilities.rb : General-purpose utility classes which don't fit anywhere else # # Copyright August 2012, Alex Dowad. All Rights Reserved. # # This is free software. Please see the LICENSE and COPYING files for details. require 'thread' module Prawn # Throughout the Prawn codebase, repeated calculations which can benefit from # caching are made. # In some cases, caching and reusing results can not only save CPU cycles but # also greatly reduce memory requirements # But at the same time, we don't want to throw away thread safety # We have two interchangeable thread-safe cache implementations: # @private class SynchronizedCache # As an optimization, this could access the hash directly on VMs with # a global interpreter lock (like MRI) def initialize @cache = {} @mutex = Mutex.new end def [](key) @mutex.synchronize { @cache[key] } end def []=(key, value) @mutex.synchronize { @cache[key] = value } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
prawn-2.2.2 | lib/prawn/utilities.rb |
prawn-2.2.1 | lib/prawn/utilities.rb |
prawn-2.2.0 | lib/prawn/utilities.rb |