thread.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2009 The RE2 Authors.  All Rights Reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// license that can be found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef RE2_UTIL_THREAD_H__
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define RE2_UTIL_THREAD_H__
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <pthread.h>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Thread {
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Thread();
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~Thread();
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void Start();
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void Join();
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SetJoinable(bool);
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Run() = 0;
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  pthread_t pid_;
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool running_;
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool joinable_;
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // RE2_UTIL_THREAD_H__
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch