Linux多线程编程工具库liblmp_tool github: https://github.com/Dwyane05/liblmp_tool
Thread 类封装了原始 pthread_create等操作函数;内含同步工具和原子锁
头文件:
/*
* Use of this source code is governed by a BSD-style license
* that can be found in the License file.
*
* Thread.h
* Created on: May 30, 2019
* Author: cuiyongfei
*/
#ifndef LMP_TOOL_THREAD_H
#define LMP_TOOL_THREAD_H
#include "Atomic.h"
#include "CountDownLatch.h"
#include "Common.h"
#include <functional>
#include <memory>
#include <pthread.h>
namespace lmp_tool
{
class Thread : noncopyable
{
public:
typedef std::function<void ()> ThreadFunc;
explicit Thread(ThreadFunc, const string& name = string());
// FIXME: make it movable in C++11
~Thread();
void start();
int join(); // return pthread_join()
bool started() const { return started_; }
// pthread_t pthreadId() const { return pthreadId_; }
pid_t tid() const { return tid_; }
const string& name() const { return name_; }
static int numCreated() { return numCreated_.get(); }
private:
void setDefaultName();
bool started_;
bool joined_;
pthread_t pthreadId_;
pid_t tid_;
ThreadFunc func_;
string name_;
CountDownLatch latch_;
static AtomicInt32 numCreated_;
};
} // namespace lmp_tool
#endif // LMP_TOOL_THREAD_H
.cc文件
/*
* Use of this source code is governed by a BSD-style license
* that can be found in the License file.
*
* Thread.cc
* Created on: May 30, 2019
* Author: cuiyongfei
*/
#include "Thread.h"
#