有了前面线程创建和循环队列的基础,我们再来看一个单度、单写利用循环队列的例子,代码如下:
#include <stdio.h>
#include <pthread.h>
#include <string>
#include "circular_queue.h"
class ThreadBase {
public:
virtual ~ThreadBase() {}
void SetMessage(const char* message) {
message_ = message;
}
void Start() {
pthread_create(&thread_id_, NULL, Hook, this);
}
void* Join() {
void* ret = NULL;
pthread_join(thread_id_, &ret);
return ret;
}
virtual void Run() {
printf("%s\n", message_.c_str());
}
private:
static void* Hook(void* object) {
ThreadBase* thread_base= static_cast<ThreadBase*>(object);
thread_base->Run();
}
pthread_t thread_id_;
std::string message_;
};
class ThreadReader : public ThreadBase {
public:
Th