Sha256: 1da500833966027f0cf9ea5f3ca4f2848576639c3becc8818e67a2b0e88d7297
Contents?: true
Size: 1011 Bytes
Versions: 2
Compression:
Stored size: 1011 Bytes
Contents
# frozen_string_literal: true # 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. 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
prawn-2.4.0 | lib/prawn/utilities.rb |
prawn-2.3.0 | lib/prawn/utilities.rb |