Sha256: a3f11454639b35f5bcb73bb49d6e937bcbf111e337483109bcde327fd8c36490

Contents?: true

Size: 642 Bytes

Versions: 1

Compression:

Stored size: 642 Bytes

Contents

require 'thread'
module Netz
  # a thread safe array class
  class SafeArray
    def initialize(items=[])
      @items = items
      @mutex = Mutex.new
    end

    def push(item)
      @mutex.synchronize {
        @items.push item
      }
      self
    end
    alias :<< :push

    def delete(item)
      @mutex.synchronize {
        @items.delete item
      }
    end

    def each(&block)
      @mutex.synchronize {
        @items.each(&block)
      }
      self
    end

    def empty?
      @mutex.synchronize {
        @items.empty?
      }
    end

    def size
      @mutex.synchronize {
        @items.size
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
netz-0.0.1 lib/netz/safe_array.rb