1.类MyThread封装了信号量与多线程,方便项目使用,类TaskThread继承MyThread类,TaskThread重写了run函数作为线程的启动函数
2.MyThread.h文件
#ifndef MYTHREAD_H
#define MYTHREAD_H#include <pthread.h>
#include <semaphore.h>
class MyThread
{
public:
MyThread();
virtual void run()=0;
int start();
void wait();
void initSem(); //初始化信号量
void destorySem();//销毁信号量
void addSem();//信号量增加
void subSem();//等待信号量,如果信号量大于0时,每次减少,如果信号量为0时一直阻塞线程
void getSemValue(int &);
private:
pthread_t my_pt;
sem_t my_sem;
};
3.MyThread.cpp文件
#include "MyThread.h"
#include <stdio.h>
#include "unistd.h"
static void *start_routine(void *arg)
{
MyThread *myCls=(MyT