mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 02:41:59 +00:00
45 lines
756 B
C++
45 lines
756 B
C++
|
// 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;
|
||
|
}
|