Suppose you have a Map (programming language doesn't matter) and would like to fill it up bit by bit. Can someone show how to make this thread-safe (parallel reads, exclusive writes) given a read-write lock object is available?
Here's some pdeudo-code, which is not threadsafe, to get started:
def get_or_create_item(item_id)
if (!@map.has_key?(item_id))
@map[item_id] = create_item()
end
return @map[item_id]
end
def create_item
#...
end
How to make it thread-safe, assuming you have a read-write lock object available?
rw_lock = ReadWriteLock.new
...
rw_lock.acquire_read()
rw_lock.release_read()
...
rw_lock.acquire_write()
rw_lock.release_write()
Thanks