OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/threading/sequenced_worker_pool.h" | 5 #include "base/threading/sequenced_worker_pool.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <list> | 9 #include <list> |
10 #include <map> | 10 #include <map> |
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 int max_new_blocking_tasks_after_shutdown) { | 917 int max_new_blocking_tasks_after_shutdown) { |
918 DCHECK_GE(max_new_blocking_tasks_after_shutdown, 0); | 918 DCHECK_GE(max_new_blocking_tasks_after_shutdown, 0); |
919 { | 919 { |
920 AutoLock lock(lock_); | 920 AutoLock lock(lock_); |
921 // Cleanup and Shutdown should not be called concurrently. | 921 // Cleanup and Shutdown should not be called concurrently. |
922 CHECK_EQ(CLEANUP_DONE, cleanup_state_); | 922 CHECK_EQ(CLEANUP_DONE, cleanup_state_); |
923 if (shutdown_called_) | 923 if (shutdown_called_) |
924 return; | 924 return; |
925 shutdown_called_ = true; | 925 shutdown_called_ = true; |
926 | 926 |
| 927 max_blocking_tasks_after_shutdown_ = max_new_blocking_tasks_after_shutdown; |
| 928 |
927 if (subtle::NoBarrier_Load(&g_all_pools_state) != | 929 if (subtle::NoBarrier_Load(&g_all_pools_state) != |
928 AllPoolsState::WORKER_CREATED) | 930 AllPoolsState::WORKER_CREATED) { |
929 return; | 931 return; |
930 | 932 } |
931 max_blocking_tasks_after_shutdown_ = max_new_blocking_tasks_after_shutdown; | |
932 | 933 |
933 // Tickle the threads. This will wake up a waiting one so it will know that | 934 // Tickle the threads. This will wake up a waiting one so it will know that |
934 // it can exit, which in turn will wake up any other waiting ones. | 935 // it can exit, which in turn will wake up any other waiting ones. |
935 SignalHasWork(); | 936 SignalHasWork(); |
936 | 937 |
937 // There are no pending or running tasks blocking shutdown, we're done. | 938 // There are no pending or running tasks blocking shutdown, we're done. |
938 if (CanShutdown()) | 939 if (CanShutdown()) |
939 return; | 940 return; |
940 } | 941 } |
941 | 942 |
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1620 bool SequencedWorkerPool::IsShutdownInProgress() { | 1621 bool SequencedWorkerPool::IsShutdownInProgress() { |
1621 return inner_->IsShutdownInProgress(); | 1622 return inner_->IsShutdownInProgress(); |
1622 } | 1623 } |
1623 | 1624 |
1624 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( | 1625 bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread( |
1625 SequenceToken sequence_token) const { | 1626 SequenceToken sequence_token) const { |
1626 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); | 1627 return inner_->IsRunningSequenceOnCurrentThread(sequence_token); |
1627 } | 1628 } |
1628 | 1629 |
1629 } // namespace base | 1630 } // namespace base |
OLD | NEW |