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

Unified Diff: base/stats_table_unittest.cc

Issue 8751: Port last remaining test case in base/stats_table_unittest.cc, and... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 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
« base/stats_table.cc ('K') | « base/stats_table.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/stats_table_unittest.cc
===================================================================
--- base/stats_table_unittest.cc (revision 4223)
+++ base/stats_table_unittest.cc (working copy)
@@ -66,13 +66,17 @@
// The number of thread loops that we will do.
const int kThreadLoops = 1000;
-// TODO(estade): port this test
-#if defined(OS_WIN)
-unsigned __stdcall StatsTableMultipleThreadMain(void* param) {
+class StatsTableThread : public PlatformThread::Delegate {
Dean McNamee 2008/10/31 19:20:37 Can you use SimpleThread, it was designed for unit
+public:
+ void ThreadMain();
+ PlatformThreadHandle thread_;
+ int id_;
+};
+
+void StatsTableThread::ThreadMain() {
// Each thread will open the shared memory and set counters
// concurrently in a loop. We'll use some pauses to
// mixup the thread scheduling.
- int16 id = reinterpret_cast<int16>(param);
StatsCounter zero_counter(kCounterZero);
StatsCounter lucky13_counter(kCounter1313);
@@ -84,13 +88,12 @@
lucky13_counter.Set(1313);
increment_counter.Increment();
decrement_counter.Decrement();
- if (id % 2)
+ if (id_ % 2)
mixed_counter.Decrement();
else
mixed_counter.Increment();
PlatformThread::Sleep(index % 10); // short wait
}
- return 0;
}
// Create a few threads and have them poke on their counters.
@@ -107,22 +110,20 @@
// Spin up a set of threads to go bang on the various counters.
// After we join the threads, we'll make sure the counters
// contain the values we expected.
- HANDLE threads[kMaxThreads];
+ StatsTableThread threads[kMaxThreads];
// Spawn the threads.
- for (int16 index = 0; index < kMaxThreads; index++) {
- void* argument = reinterpret_cast<void*>(index);
- unsigned thread_id;
- threads[index] = reinterpret_cast<HANDLE>(
- _beginthreadex(NULL, 0, StatsTableMultipleThreadMain, argument, 0,
- &thread_id));
- EXPECT_NE((HANDLE)NULL, threads[index]);
+ for (int index = 0; index < kMaxThreads; index++) {
+ threads[index].id_ = index;
+ bool created =
+ PlatformThread::Create(0, &threads[index], &threads[index].thread_);
+ EXPECT_EQ(true, created);
+ EXPECT_NE(static_cast<PlatformThreadHandle>(0), threads[index].thread_);
}
// Wait for the threads to finish.
for (int index = 0; index < kMaxThreads; index++) {
- DWORD rv = WaitForSingleObject(threads[index], 60 * 1000);
- EXPECT_EQ(rv, WAIT_OBJECT_0); // verify all threads finished
+ PlatformThread::Join(threads[index].thread_);
}
StatsCounter zero_counter(kCounterZero);
StatsCounter lucky13_counter(kCounter1313);
@@ -148,7 +149,6 @@
table.GetCounterValue(name));
EXPECT_EQ(0, table.CountThreadsRegistered());
}
-#endif // defined(OS_WIN)
const std::wstring kTableName = L"MultipleProcessStatTable";
« base/stats_table.cc ('K') | « base/stats_table.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698