12ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Copyright 2009 The RE2 Authors. All Rights Reserved. 22ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// Use of this source code is governed by a BSD-style 32ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson// license that can be found in the LICENSE file. 42ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 52ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#ifndef RE2_UTIL_THREAD_H__ 62ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#define RE2_UTIL_THREAD_H__ 72ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 82ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#include <pthread.h> 92ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 102ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodsonclass Thread { 112ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson public: 122ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson Thread(); 132ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson virtual ~Thread(); 142ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void Start(); 152ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void Join(); 162ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson void SetJoinable(bool); 172ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson virtual void Run() = 0; 182ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 192ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson private: 202ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson pthread_t pid_; 212ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson bool running_; 222ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson bool joinable_; 232ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson}; 242ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 252ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson#endif // RE2_UTIL_THREAD_H__ 262ee91b4af4353b9e6a9d591c32fedfc58fd4ef35Ian Hodson 27