thread.cpp
来自「This is pthread c++ wrapper class. Devel」· C++ 代码 · 共 83 行
CPP
83 行
#include "thread.h"
#include <stdio.h>void *_threadFunc(void *obj){ void *retval = 0; Thread *thread = static_cast<Thread *>(obj); thread->m_running = true; thread->run(); thread->m_running = false;
fprintf(stderr, "ThreadFunc#%d exit\n", thread->m_threadid); pthread_exit(NULL); return retval;}Thread::Thread(int id) :m_running(false),
m_threadid(id){
size_t stacksize;
pthread_attr_init(&m_attr);
pthread_attr_getstacksize(&m_attr, &stacksize);
stacksize *= 2;
pthread_attr_setstacksize(&m_attr, stacksize);
fprintf(stderr, "Thread#%d stack size %d\n", m_threadid, stacksize);
}Thread::~Thread(){ /* if (m_running) pthread_cancel(m_thread); */ /* if (m_running) stop(); pthread_attr_destroy(&m_attr); */}
void Thread::start(){
fprintf(stderr, "Thread#%d start() running=%d\n", m_threadid, m_running); if (m_running) return; if (pthread_create(&m_thread, &m_attr, _threadFunc, static_cast<void *>(this)) == 0) { }}void Thread::stop(){
fprintf(stderr, "Thread#%d stop() running=%d\n", m_threadid, m_running);
//pthread_cancel(m_thread); m_running = false;}void Thread::join(){ //wait for the running thread to exit void *retValue;
fprintf(stderr, "Thread#%d join() running=%d\n", m_threadid, m_running);
//pthread_attr_destroy(&m_attr); m_running = false; if (pthread_join(m_thread, &retValue) == 0) { }}bool Thread::isRunning(){ return m_running;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?