def testBarrierAbort(self): num_tasks = 2 num_waits = 1 sync_times = [0] * num_waits barrier = cnn_util.Barrier(num_tasks) thread = threading.Thread( target=self._run_task, args=(barrier, sync_times)) thread.start() barrier.abort() # thread won't be blocked by done barrier. thread.join()
def testBarrier(self): num_tasks = 20 num_waits = 4 barrier = cnn_util.Barrier(num_tasks) threads = [] sync_matrix = [] for i in range(num_tasks): sync_times = [0] * num_waits thread = threading.Thread( target=self._run_task, args=(barrier, sync_times)) thread.start() threads.append(thread) sync_matrix.append(sync_times) for thread in threads: thread.join() for wait_index in range(num_waits - 1): # Max of times at iteration i < min of times at iteration i + 1 self.assertLessEqual( max([sync_matrix[i][wait_index] for i in range(num_tasks)]), min([sync_matrix[i][wait_index + 1] for i in range(num_tasks)]))