| Index: third_party/re2/util/thread.cc
|
| diff --git a/third_party/re2/util/thread.cc b/third_party/re2/util/thread.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7349991530a57011b46b00e5591e229c3797e052
|
| --- /dev/null
|
| +++ b/third_party/re2/util/thread.cc
|
| @@ -0,0 +1,44 @@
|
| +// Copyright 2009 The RE2 Authors. All Rights Reserved.
|
| +// 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"
|
| +
|
| +Thread::Thread() {
|
| + pid_ = 0;
|
| + running_ = 0;
|
| + joinable_ = 0;
|
| +}
|
| +
|
| +Thread::~Thread() {
|
| +}
|
| +
|
| +void *startThread(void *v) {
|
| + Thread* t = (Thread*)v;
|
| + t->Run();
|
| + return 0;
|
| +}
|
| +
|
| +void Thread::Start() {
|
| + CHECK(!running_);
|
| + pthread_create(&pid_, 0, startThread, this);
|
| + running_ = true;
|
| + if (!joinable_)
|
| + pthread_detach(pid_);
|
| +}
|
| +
|
| +void Thread::Join() {
|
| + CHECK(running_);
|
| + CHECK(joinable_);
|
| + void *val;
|
| + pthread_join(pid_, &val);
|
| + running_ = 0;
|
| +}
|
| +
|
| +void Thread::SetJoinable(bool j) {
|
| + CHECK(!running_);
|
| + joinable_ = j;
|
| +}
|
|
|