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

Side by Side Diff: native_client_sdk/src/examples/demo/voronoi/threadpool.h

Issue 16325024: Move thread_pool.h into utils so it can be shared by more than one example. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Simple thread pool class
6
7 #ifndef EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
8 #define EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
9
10 #include <pthread.h>
11 #include <semaphore.h>
12
13 // typdef helper for work function
14 typedef void (*WorkFunction)(int task_index, void* data);
15
16 // ThreadPool is a class to manage num_threads and assign
17 // them num_tasks of work at a time. Each call
18 // to Dispatch(..) will block until all tasks complete.
19 // If 0 is passed in for num_threads, all tasks will be
20 // issued on the dispatch thread.
21
22 class ThreadPool {
23 public:
24 void Dispatch(int num_tasks, WorkFunction work, void* data);
25 explicit ThreadPool(int num_threads);
26 ~ThreadPool();
27 private:
28 int DecCounter();
29 void Setup(int counter, WorkFunction work, void* data);
30 void DispatchMany(int num_tasks, WorkFunction work, void* data);
31 void DispatchHere(int num_tasks, WorkFunction work, void* data);
32 void WorkLoop();
33 static void* WorkerThreadEntry(void* data);
34 void PostExitAndJoinAll();
35 pthread_t* threads_;
36 int counter_;
37 const int num_threads_;
38 bool exiting_;
39 void* user_data_;
40 WorkFunction user_work_function_;
41 sem_t work_sem_;
42 sem_t done_sem_;
43 };
44 #endif // EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
45
OLDNEW
« no previous file with comments | « native_client_sdk/src/examples/demo/voronoi/example.dsc ('k') | native_client_sdk/src/examples/demo/voronoi/threadpool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698