| Index: native_client_sdk/src/examples/demo/voronoi/threadpool.h
|
| ===================================================================
|
| --- native_client_sdk/src/examples/demo/voronoi/threadpool.h (revision 203765)
|
| +++ native_client_sdk/src/examples/demo/voronoi/threadpool.h (working copy)
|
| @@ -1,45 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Simple thread pool class
|
| -
|
| -#ifndef EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
|
| -#define EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
|
| -
|
| -#include <pthread.h>
|
| -#include <semaphore.h>
|
| -
|
| -// typdef helper for work function
|
| -typedef void (*WorkFunction)(int task_index, void* data);
|
| -
|
| -// ThreadPool is a class to manage num_threads and assign
|
| -// them num_tasks of work at a time. Each call
|
| -// to Dispatch(..) will block until all tasks complete.
|
| -// If 0 is passed in for num_threads, all tasks will be
|
| -// issued on the dispatch thread.
|
| -
|
| -class ThreadPool {
|
| - public:
|
| - void Dispatch(int num_tasks, WorkFunction work, void* data);
|
| - explicit ThreadPool(int num_threads);
|
| - ~ThreadPool();
|
| - private:
|
| - int DecCounter();
|
| - void Setup(int counter, WorkFunction work, void* data);
|
| - void DispatchMany(int num_tasks, WorkFunction work, void* data);
|
| - void DispatchHere(int num_tasks, WorkFunction work, void* data);
|
| - void WorkLoop();
|
| - static void* WorkerThreadEntry(void* data);
|
| - void PostExitAndJoinAll();
|
| - pthread_t* threads_;
|
| - int counter_;
|
| - const int num_threads_;
|
| - bool exiting_;
|
| - void* user_data_;
|
| - WorkFunction user_work_function_;
|
| - sem_t work_sem_;
|
| - sem_t done_sem_;
|
| -};
|
| -#endif // EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
|
| -
|
|
|