| 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;
|
| }
|
|
|
|
|