From 8f77b5511b46d9ec8c105a412be702101421556f Mon Sep 17 00:00:00 2001 From: impressionyang Date: Sun, 24 Jan 2021 12:03:31 +0800 Subject: [PATCH] first initial update --- README.md | 3 +++ pthread_test/Makefile | 14 ++++++++++++++ pthread_test/main.cpp | 22 ++++++++++++++++++++++ pthread_test/thread.cpp | 24 ++++++++++++++++++++++++ pthread_test/thread.h | 19 +++++++++++++++++++ pthread_test/thread_test | Bin 0 -> 18800 bytes pthread_test/thread_test.cpp | 31 +++++++++++++++++++++++++++++++ pthread_test/thread_test.h | 25 +++++++++++++++++++++++++ 8 files changed, 138 insertions(+) create mode 100644 README.md create mode 100644 pthread_test/Makefile create mode 100644 pthread_test/main.cpp create mode 100644 pthread_test/thread.cpp create mode 100644 pthread_test/thread.h create mode 100755 pthread_test/thread_test create mode 100644 pthread_test/thread_test.cpp create mode 100644 pthread_test/thread_test.h diff --git a/README.md b/README.md new file mode 100644 index 0000000..7c228e1 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# linux cpp pthread package class + +it is use to make the thread create more easyer in linux c plus plus diff --git a/pthread_test/Makefile b/pthread_test/Makefile new file mode 100644 index 0000000..cdea1ee --- /dev/null +++ b/pthread_test/Makefile @@ -0,0 +1,14 @@ +object = main.o thread.o thread_test.o +run_target = thread_test +LFLAG = -lpthread + +main : $(object) + g++ -o $(run_target) $(object) $(LFLAG) + +main.o : main.cpp +thread.o : thread.h thread.cpp +thread_test.o: thread_test.h thread_test.cpp + +.PHONY : clean +clean: + rm $(object) \ No newline at end of file diff --git a/pthread_test/main.cpp b/pthread_test/main.cpp new file mode 100644 index 0000000..e9fa992 --- /dev/null +++ b/pthread_test/main.cpp @@ -0,0 +1,22 @@ +#include +#include "thread_test.h" + +using namespace std; + +int main(int argc, char **argv) +{ + Thread_Test test(10); + int ret = test.start(); + if (!ret) { + cout<<"thread add succeed!"<run(); + return 0; //线程的实体是run +} + +pthread_t Thread::get_thread_id() +{ + return this->pid; +} \ No newline at end of file diff --git a/pthread_test/thread.h b/pthread_test/thread.h new file mode 100644 index 0000000..25b2ffd --- /dev/null +++ b/pthread_test/thread.h @@ -0,0 +1,19 @@ +#ifndef _THREAD_H_ +#define _THREAD_H_ + +#include + +class Thread +{ +private: + pthread_t pid; + +private: + static void *start_thread(void *arg); //静态成员函数 +public: + int start(); + virtual void run() = 0; //基类中的虚函数要么实现,要么是纯虚函数(绝对不允许声明不实现,也不纯虚) + pthread_t get_thread_id(); +}; + +#endif // _THREAD_H_ \ No newline at end of file diff --git a/pthread_test/thread_test b/pthread_test/thread_test new file mode 100755 index 0000000000000000000000000000000000000000..b5e3101931584954671402222babab95818eb5c1 GIT binary patch literal 18800 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 literal 0 HcmV?d00001 diff --git a/pthread_test/thread_test.cpp b/pthread_test/thread_test.cpp new file mode 100644 index 0000000..ad62a36 --- /dev/null +++ b/pthread_test/thread_test.cpp @@ -0,0 +1,31 @@ +#include "thread_test.h" + + +Thread_Test::Thread_Test(int cnt) +{ + this->cnt = cnt; + this->alive = true; +} + +void Thread_Test::run() +{ + while(this->alive) { + cout<<"test: "<alive<alive = false; +} + +int Thread_Test::get_cnt() +{ + return this->cnt; +} + +bool Thread_Test::get_running() +{ + return this->alive; +} \ No newline at end of file diff --git a/pthread_test/thread_test.h b/pthread_test/thread_test.h new file mode 100644 index 0000000..82da4ca --- /dev/null +++ b/pthread_test/thread_test.h @@ -0,0 +1,25 @@ +#ifndef _THREAD_TEST_CPP_ +#define _THREAD_TEST_CPP_ + +#include +#include +#include "thread.h" + +using namespace std; + +class Thread_Test: public Thread +{ +public: + Thread_Test(int cnt); + void stop(); + int get_cnt(); + bool get_running(); + +protected: + void run(); + +private: + int cnt; + bool alive; +}; +#endif // _THREAD_TEST_CPP_ \ No newline at end of file