linux 多线程学习
2016-05-27 22:02
337 查看
在C++中如果在类里面调用线程。以及在线程中使用类中的其他成员函数那么可以使用下面的方法
class CanProto{//头文件简写
。。。。。。
pubilc:
static void * Receive_Pthread(void *p);
}
class CanProto{//头文件简写
。。。。。。
pubilc:
static void * Receive_Pthread(void *p);
}
函数调用 void * CanProto::Receive_Pthread(void *p) { CanFrame frame; unsigned char *precvframe = (unsigned char *)&frame; const int can_frame_len = sizeof(CanFrame); int maxfd,ret; fd_set rfds; struct timeval timeout; timeout.tv_sec = 0; memset(&frame,0x00,sizeof(frame)); while(1) { FD_ZERO(&rfds); FD_SET(m_fd,&rfds); timeout.tv_usec = 8000; memset(precvframe,0x00 ,can_frame_len); maxfd = m_fd +1; if((ret = select(maxfd,&rfds,NULL,NULL,&timeout)) < 0 ){ PERROR("select"); } if(ret > 0){ int ret = read(m_fd,(char*)precvframe,can_frame_len); printf("ret = %d\n",ret); ((CanProto *)p)->printf_frame(frame.canID,frame.data,frame.len); } } } int CanProto::Start(void)主函数 { int rdlen; CanDev can; CmdProcess m_canProc; m_fd = can.Open(); if(m_fd < 0) return 0; pthread_t pid; int pidbyte = pthread_create(&pid,NULL,send_ID,NULL); pthread_t pidt; int resepidt = pthread_create(&pidt,NULL,CanProto::Receive_Pthread,this); return 0; }mark 201605272202 于公司中修改
相关文章推荐
- Python3写爬虫(四)多线程实现数据爬取
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- C#实现多线程的同步方法实例分析
- Lua和C语言的交互详解
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- 解析C#多线程编程中异步多线程的实现及线程池的使用
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- 分享我在工作中遇到的多线程下导致RCW无法释放的问题
- C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法
- C#控制台下测试多线程的方法
- 21天学习android开发教程之SurfaceView与多线程的混搭
- Ruby 多线程的潜力和弱点分析