Index: third_party/re2/util/threadwin.cc |
diff --git a/third_party/re2/util/thread.cc b/third_party/re2/util/threadwin.cc |
similarity index 72% |
copy from third_party/re2/util/thread.cc |
copy to third_party/re2/util/threadwin.cc |
index 7349991530a57011b46b00e5591e229c3797e052..d68f2c58b3f4c0559be25da05d978528a60bb1ef 100644 |
--- a/third_party/re2/util/thread.cc |
+++ b/third_party/re2/util/threadwin.cc |
@@ -2,10 +2,8 @@ |
// Use of this source code is governed by a BSD-style |
// license that can be found in the LICENSE file. |
-#include <pthread.h> |
- |
-#include "util/util.h" |
#include "util/thread.h" |
+#include "util/util.h" |
Thread::Thread() { |
pid_ = 0; |
@@ -16,7 +14,7 @@ Thread::Thread() { |
Thread::~Thread() { |
} |
-void *startThread(void *v) { |
+DWORD WINAPI startThread(void *v) { |
Thread* t = (Thread*)v; |
t->Run(); |
return 0; |
@@ -24,17 +22,19 @@ void *startThread(void *v) { |
void Thread::Start() { |
CHECK(!running_); |
- pthread_create(&pid_, 0, startThread, this); |
+ pid_ = CreateThread(NULL, 0, startThread, this, 0, NULL); |
running_ = true; |
- if (!joinable_) |
- pthread_detach(pid_); |
+ if (!joinable_) { |
+ CloseHandle(pid_); |
+ pid_ = 0; |
+ } |
} |
void Thread::Join() { |
CHECK(running_); |
CHECK(joinable_); |
- void *val; |
- pthread_join(pid_, &val); |
+ if (pid_ != 0) |
+ WaitForSingleObject(pid_, INFINITE); |
running_ = 0; |
} |