Skip to content

Instantly share code, notes, and snippets.

@pathsny
Created January 4, 2011 07:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pathsny/764495 to your computer and use it in GitHub Desktop.
Save pathsny/764495 to your computer and use it in GitHub Desktop.
files = [{:name => f1}, {:name => f2}, {:name => f3}]
index = 0
scanner = Thread.new do
files.each do |f|
f[:sha1] = sha1(f[:name])
index += 1
end
end
updater = Thread.new do
local_index = 0
while (local_index < files.size - 1)
if (local_index < index)
update_metadata(files[local_index])
else
sleep(1)
end
end
end
scanner.join
updater.join
files = [{:name => f1}, {:name => f2}, {:name => f3}]
index = 0
mutex = Mutex.new
scanner = Thread.new do
files.each do |f|
sha1 = sha1(f[:name])
mutex.synchronize {
f[:sha1] = sha1
index += 1
}
end
end
updater = Thread.new do
local_index = 0
while (local_index < files.size - 1)
if (local_index < mutex.synchronize {index} )
update_metadata(files[local_index])
else
sleep(1)
end
end
end
scanner.join
updater.join
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment