)]}'
{"taskflow/types/latch.py":[{"author":{"_account_id":9648,"name":"Greg Hill","email":"greg.hill@rackspace.com","username":"jimbobhickville"},"change_message_id":"9a4499eb1007c96b6551d0548b87f97974e677b1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            w \u003d misc.StopWatch(timeout).start()"},{"line_number":58,"context_line":"        self._cond.acquire()"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            while self._count \u003e 0:"},{"line_number":61,"context_line":"                if w is not None:"},{"line_number":62,"context_line":"                    if w.expired():"},{"line_number":63,"context_line":"                        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_12b207e5","line":60,"updated":"2014-06-25 18:34:35.000000000","message":"Does this get decremented somewhere?  Or is it supposed to loop infinitely until w.expired() is true?","commit_id":"2f417d8df05158969ee332651f7046099ddfa485"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"654f80c8c91512a2116e711435fdf706eab72848","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            w \u003d misc.StopWatch(timeout).start()"},{"line_number":58,"context_line":"        self._cond.acquire()"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            while self._count \u003e 0:"},{"line_number":61,"context_line":"                if w is not None:"},{"line_number":62,"context_line":"                    if w.expired():"},{"line_number":63,"context_line":"                        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_d505e979","line":60,"in_reply_to":"1ae5cdf2_12b207e5","updated":"2014-06-25 18:52:31.000000000","message":"See the countdown() method. What will happen is that a thread (or other entity) can setup a latch(10), then 10 threads can be spawned (for example), at the end of each thread finishing its work it will call countdown(), the \u0027main\u0027 thread will wait() for 10...9.8...0 and then it will reactivate. This is a generic way for waiting for X amount of work to be finished before proceeding. \n\nIts similar to the following (in concept and theory), http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html","commit_id":"2f417d8df05158969ee332651f7046099ddfa485"},{"author":{"_account_id":9648,"name":"Greg Hill","email":"greg.hill@rackspace.com","username":"jimbobhickville"},"change_message_id":"dac38329570af1c6a631f99ad10c0a7e41b31aeb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            w \u003d misc.StopWatch(timeout).start()"},{"line_number":58,"context_line":"        self._cond.acquire()"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            while self._count \u003e 0:"},{"line_number":61,"context_line":"                if w is not None:"},{"line_number":62,"context_line":"                    if w.expired():"},{"line_number":63,"context_line":"                        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_f2649c4a","line":60,"in_reply_to":"1ae5cdf2_d505e979","updated":"2014-06-26 12:20:19.000000000","message":"Ah, so something in the background is calling countdown?  I guess that makes sense then.","commit_id":"2f417d8df05158969ee332651f7046099ddfa485"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"073994ae7fbfe09ae26a4e0fadbc771ee252a27c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            w \u003d misc.StopWatch(timeout).start()"},{"line_number":58,"context_line":"        self._cond.acquire()"},{"line_number":59,"context_line":"        try:"},{"line_number":60,"context_line":"            while self._count \u003e 0:"},{"line_number":61,"context_line":"                if w is not None:"},{"line_number":62,"context_line":"                    if w.expired():"},{"line_number":63,"context_line":"                        return False"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_0da0978f","line":60,"in_reply_to":"1ae5cdf2_f2649c4a","updated":"2014-06-30 22:39:41.000000000","message":"Right :)","commit_id":"2f417d8df05158969ee332651f7046099ddfa485"}]}
