Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2506)

Unified Diff: base/thread_pool.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/thread_pool.h ('k') | base/thread_pool_callback.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/thread_pool.cc
diff --git a/base/thread_pool.cc b/base/thread_pool.cc
deleted file mode 100644
index e614dc4463a0e15a3de08336069c72da060b8386..0000000000000000000000000000000000000000
--- a/base/thread_pool.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2004-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-
-#include "omaha/base/thread_pool.h"
-
-#include "base/scoped_ptr.h"
-#include "omaha/base/debug.h"
-#include "omaha/base/error.h"
-#include "omaha/base/exception_barrier.h"
-#include "omaha/base/logging.h"
-
-namespace omaha {
-
-namespace {
-
-// Context keeps track the information necessary to execute a work item
-// inside a thread pool thread.
-class Context {
- public:
- Context(ThreadPool* pool, UserWorkItem* work_item)
- : pool_(pool),
- work_item_(work_item) {
- ASSERT1(pool);
- ASSERT1(work_item);
- }
-
- ThreadPool* pool() const { return pool_; }
- UserWorkItem* work_item() const { return work_item_; }
-
- private:
- ThreadPool* pool_;
- UserWorkItem* work_item_;
-
- DISALLOW_EVIL_CONSTRUCTORS(Context);
-};
-
-// Returns true if delta time since 'baseline' is greater or equal than
-// 'milisecs'. Note: GetTickCount wraps around every ~48 days.
-bool TimeHasElapsed(DWORD baseline, DWORD milisecs) {
- DWORD current = ::GetTickCount();
- DWORD wrap_bias = 0;
- if (current < baseline) {
- wrap_bias = static_cast<DWORD>(0xFFFFFFFF);
- }
- return (current - baseline + wrap_bias) >= milisecs ? true : false;
-}
-
-} // namespace
-
-
-DWORD WINAPI ThreadPool::ThreadProc(void* param) {
- ExceptionBarrier eb;
- UTIL_LOG(L4, (_T("[ThreadPool::ThreadProc]")));
- ASSERT1(param);
- Context* context = static_cast<Context*>(param);
- context->pool()->ProcessWorkItem(context->work_item());
- delete context;
- return 0;
-}
-
-ThreadPool::ThreadPool()
- : work_item_count_(0),
- shutdown_delay_(0) {
- UTIL_LOG(L2, (_T("[ThreadPool::ThreadPool]")));
-}
-
-ThreadPool::~ThreadPool() {
- UTIL_LOG(L2, (_T("[ThreadPool::~ThreadPool]")));
-
- if (!shutdown_event_) {
- return;
- }
-
- DWORD baseline_tick_count = ::GetTickCount();
- if (::SetEvent(get(shutdown_event_))) {
- while (work_item_count_ != 0) {
- ::Sleep(1);
- if (TimeHasElapsed(baseline_tick_count, shutdown_delay_)) {
- UTIL_LOG(LE, (_T("[ThreadPool::~ThreadPool][timeout elapsed]")));
- break;
- }
- }
- }
-}
-
-HRESULT ThreadPool::Initialize(int shutdown_delay) {
- shutdown_delay_ = shutdown_delay;
- reset(shutdown_event_, ::CreateEvent(NULL, true, false, NULL));
- return shutdown_event_ ? S_OK : HRESULTFromLastError();
-}
-
-void ThreadPool::ProcessWorkItem(UserWorkItem* work_item) {
- ASSERT1(work_item);
- work_item->Process();
- delete work_item;
- ::InterlockedDecrement(&work_item_count_);
-}
-
-HRESULT ThreadPool::QueueUserWorkItem(UserWorkItem* work_item, uint32 flags) {
- UTIL_LOG(L4, (_T("[ThreadPool::QueueUserWorkItem]")));
- ASSERT1(work_item);
-
- scoped_ptr<Context> context(new Context(this, work_item));
- work_item->set_shutdown_event(get(shutdown_event_));
- ::InterlockedIncrement(&work_item_count_);
- if (!::QueueUserWorkItem(&ThreadPool::ThreadProc, context.get(), flags)) {
- ::InterlockedDecrement(&work_item_count_);
- return HRESULTFromLastError();
- }
-
- // The thread pool has the ownership of the work item thereon.
- context.release();
- return S_OK;
-}
-
-} // namespace omaha
-
« no previous file with comments | « base/thread_pool.h ('k') | base/thread_pool_callback.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698