Tidy up threading handling of Windows versus non-Windows. Fixes #53. Change-Id: I102273a99618a4619a1e726f3c76c3880be869bc Reviewed-on: https://code-review.googlesource.com/3499 Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/util/thread.cc b/util/thread.cc index 7349991..b620105 100644 --- a/util/thread.cc +++ b/util/thread.cc
@@ -2,8 +2,6 @@ // 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"
diff --git a/util/thread.h b/util/thread.h index b9610e0..fb67bdc 100644 --- a/util/thread.h +++ b/util/thread.h
@@ -5,7 +5,11 @@ #ifndef RE2_UTIL_THREAD_H__ #define RE2_UTIL_THREAD_H__ +#ifdef _WIN32 +#include <windows.h> +#else #include <pthread.h> +#endif class Thread { public: @@ -15,12 +19,15 @@ void Join(); void SetJoinable(bool); virtual void Run() = 0; - + private: +#ifdef _WIN32 + HANDLE pid_; +#else pthread_t pid_; +#endif bool running_; bool joinable_; }; #endif // RE2_UTIL_THREAD_H__ -
diff --git a/util/threadwin.cc b/util/threadwin.cc index f1e456e..7b431ee 100644 --- a/util/threadwin.cc +++ b/util/threadwin.cc
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -#include <windows.h> - #include "util/util.h" #include "util/thread.h" @@ -26,8 +24,7 @@ CHECK(!running_); pid_ = CreateThread(NULL, 0, startThread, this, 0, NULL); running_ = true; - if (!joinable_) - { + if (!joinable_) { CloseHandle(pid_); pid_ = 0; } @@ -36,10 +33,8 @@ void Thread::Join() { CHECK(running_); CHECK(joinable_); - if (0 != pid_) - { - WaitForSingleObject(pid_, INFINITE); - } + if (pid_ != 0) + WaitForSingleObject(pid_, INFINITE); running_ = 0; }