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)]))