当前位置: 技术问答>linux和unix
还是c++线程问题,linux g++ code blocks
来源: 互联网 发布时间:2016-09-22
本文导语: /**my_thread.h*/ /** 本人主要想练习一下socket c++ 多线程编程, 这个项目想要实现的工能是:这是一个服务器,运行先等待 client的连接,当有 client连接,服务器创建一个线程!主线程是还是等待 client发送的信息,创建的线程...
/**my_thread.h*/
/**
本人主要想练习一下socket c++ 多线程编程,
这个项目想要实现的工能是:这是一个服务器,运行先等待 client的连接,当有
client连接,服务器创建一个线程!主线程是还是等待 client发送的信息,创建的线程也是做简单的任务处理!
现在遇到的问题是,不知道咋回事,主线程 pthread_cond_signal (&cond) 发送的条件 似乎 新的线程 pthread_cond_wait (&cond, &mutex) 没有收到,不知是不是发生传说中的死锁???
*/
#include
#include
#include
#include
#include
using namespace std;
class My_Thread
{
public:
My_Thread();
~My_Thread();
virtual void init_thread();
virtual void start_thread();
virtual void destory_thread();
void *thread_fun();
virtual void process();
bool play;
public:
pthread_mutex_t mutex; /*初始化互斥锁 */
pthread_cond_t cond; //初始化条件变量
pthread_t pth_id;
};
/********************following is my_thread.cpp***********************************/
#include "my_thread.h"
static void* funtion(void* para)
{
My_Thread *thread = (My_Thread *)para;
return thread->thread_fun();
}
My_Thread::My_Thread()
{
}
My_Thread::~My_Thread()
{
destory_thread();
}
void My_Thread::init_thread()
{
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; /*初始化互斥锁 */
pthread_cond_t cond = PTHREAD_COND_INITIALIZER; //初始化条件变量
play = false;
}
void My_Thread::destory_thread()
{
pthread_join (pth_id, NULL); /*等待进程t_b结束 */
pthread_mutex_destroy (&mutex);
pthread_cond_destroy (&cond);
}
void My_Thread::start_thread()
{
cout