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

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

Issue 15732012: Revive voronoi multi-threaded demo. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 7 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
Property Changes:
Added: svn:executable
+ *
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 #if !defined(DISABLE_THREADS)
11 #include <pthread.h>
12 #include <semaphore.h>
13 #endif
14
15 // typdef helper for work function
16 typedef void (*WorkFunction)(int task_index, void *data);
17
18 // ThreadPool is a class to manage num_threads and assign
19 // them num_tasks of work at a time. Each call
20 // to Dispatch(..) will block until all tasks complete.
21
22 class ThreadPool {
23 #if !defined(DISABLE_THREADS)
noelallen1 2013/05/25 00:21:11 I would recommend removing. We either should sup
nfullagar1 2013/05/28 23:11:50 removed
24 public:
25 void Dispatch(int num_tasks, WorkFunction work, void *data);
26 explicit ThreadPool(int num_threads);
27 ~ThreadPool();
28 private:
29 int DecCounter();
30 void Setup(int counter, WorkFunction work, void *data);
31 void MultiThread(int num_tasks, WorkFunction work, void *data);
32 void SingleThread(int num_tasks, WorkFunction work, void *data);
33 void WorkLoop();
34 static void* WorkerThreadEntry(void *data);
35 void PostExitAndJoinAll();
36 pthread_t *threads_;
binji 2013/05/24 21:47:55 might want to run clang-format on this diff to fix
nfullagar1 2013/05/28 23:11:50 Done.
37 int counter_;
38 int num_threads_;
noelallen1 2013/05/25 00:21:11 Did you mean to make this one const?
nfullagar1 2013/05/28 23:11:50 yes! thx.
39 bool exiting_;
40 void *user_data_;
41 WorkFunction user_work_function_;
42 pthread_mutex_t mutex_;
43 sem_t work_tasks_;
44 sem_t done_tasks_;
45 #else
46 public:
47 void Dispatch(int num_tasks, WorkFunction work, void *data) {
48 for(int i = 0; i < num_tasks; i++) work(i, data); }
binji 2013/05/24 21:47:55 share with SingleThread?
nfullagar1 2013/05/28 23:11:50 Fishing this out and sharing this one line of code
49 explicit ThreadPool(int num_threads) { ; }
binji 2013/05/24 21:47:55 nit: {}
noelallen1 2013/05/25 00:21:11 A bit strange that in the DISABLE_THREADS case the
nfullagar1 2013/05/28 23:11:50 Done.
nfullagar1 2013/05/28 23:11:50 DISABLE_THREADS removed
50 ~ThreadPool() { ; }
51 #endif // DISABLE_THREADS
52 };
53 #endif // EXAMPLES_DEMO_VORONOI_THREADPOOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698