pthread 库是纯c库,没有类指针的概念,当想phread_create中传递类成员函数时,就会报错,这里针对这种情况,对线程创建做了必要封装,较为简单,继承类,实现run接口,然后使用start启动线程即可,有点像Qt中线程的用法

  

/*
* ThreadBase.h
*
* Created on: Oct 25, 2016
* Author: tla001
*/ #ifndef THREADBASE_H_
#define THREADBASE_H_ extern "C"{
#include <pthread.h>
#include <stdio.h>
} class ThreadBase {
public:
ThreadBase();
virtual ~ThreadBase(); int start();
int stop();//只有stopFlag内嵌如run()才有效
int isStop();
int isStart();
int join();
virtual void run()=;
private:
static void *thread_proxy_func(void *args);
int stopFlag;//1停止
int startFlag;//1开始
pthread_t tid;
}; #endif /* THREADBASE_H_ */
/*
* ThreadBase.cpp
*
* Created on: Oct 25, 2016
* Author: tla001
*/ #include "ThreadBase.h" ThreadBase::ThreadBase() {
// TODO Auto-generated constructor stub
tid=-;
stopFlag=;
startFlag=;
} ThreadBase::~ThreadBase() {
// TODO Auto-generated destructor stub } int ThreadBase::start(){
int ret=pthread_create(&tid,NULL,thread_proxy_func,this);
if(ret==){
startFlag=;
// printf("startFlag= %d\n",startFlag);
}
return ret;
}
int ThreadBase::stop(){
stopFlag=;
return pthread_join(tid,NULL);
}
int ThreadBase::join(){
return pthread_join(tid,NULL);
}
int ThreadBase::isStop(){
return stopFlag;
}
int ThreadBase::isStart(){
return startFlag;
}
void *ThreadBase::thread_proxy_func(void *args){
ThreadBase *pThread=static_cast<ThreadBase*>(args);
// printf("thread run\n");
pThread->run();
if(pThread->stopFlag==)
delete pThread;
return NULL;
}

Linux下c++使用pthread库的更多相关文章

  1. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  2. LINUX学习笔记——LINUX下EXP命令全库备份数据库文件

    LINUX下EXP命令全库备份数据库文件 1)建立备份目录,目录操作权限授权给Oracle用户 mkdir /backup  --创建backup文件夹 cd  /   --进入cd语句 ls  -l ...

  3. Linux下编译使用boost库:

    Boost是什么不多说, 下面说说怎样在Linux下编译使用Boost的所有模块. 1. 先去Boost官网下载最新的Boost版本, 我下载的是boost_1_56_0版本, 解压. 2. 进入解压 ...

  4. linux 下 奇怪的 动态库 依赖问题

    转:http://fanwei51880.blog.163.com/blog/static/3240674020111145285375/ 总结如下:1)当你在编译生成静态库的时候, 只需要相应的依赖 ...

  5. linux 下C语言编程库文件处理与Makefile编写

    做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一 ...

  6. linux下编译自己的库文件实践

    有了我传的那个资料,这个就没什么用了,那个太经典了,这个就是记录我自己的实践.:-) linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.s ...

  7. 嵌入式Linux下MP4视频录制库MP4V2移植和简单介绍

    **************************************************************************************************** ...

  8. linux下使用C++ Json库

    安装Json库 1.下载JsonCpphttp://sourceforge.net/projects/jsoncpp/files/ 2.下载sconshttp://sourceforge.net/pr ...

  9. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

随机推荐

  1. thinkphp分页+条件查询

    最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method= ...

  2. jquery实现简单的验证码倒计时的效果

    HTML: <div class="container"> <form> <div class="form-group"> ...

  3. JS中的toString()和valueOf()方法

    1.toString()方法:主要用于Array.Boolean.Date.Error.Function.Number等对象转化为字符串形式.日期类的toString()方法返回一个可读的日期和字符串 ...

  4. 部署git服务器(Windows Server 2008)

    原来的这个项目是一个人开发的,没有做版本管理,我接手后准备搭建git版本管理服务端,方便离线开发和做版本管理: 一台云主机,操作系统:Windows Server 2008,64位: java已经安装 ...

  5. FETCH - 用游标从查询中抓取行

    SYNOPSIS FETCH [ direction { FROM | IN } ] cursorname where direction can be empty or one of: NEXT P ...

  6. Oracle grant connect, resource to user语句中的权限

    博主在 Oracle 11g r2上测试(测试日期:2017.10.30): 用sys登陆到oracle中,执行以下两条语句: select * from role_sys_privs WHERE R ...

  7. Nginx学习记录(一)

    1. 什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支 ...

  8. 使TextBox的内容换行

    首先你把TextBox控件的MultiLine属性设置为True,然后把TextBox控件的Text属性根据程序需要,在需要换行的地方加入\r\n这样就可实现换行了

  9. C# checked运算符

    一.C# checked运算符 checked运算符用于对整型算术运算和显式转换启用溢出检查. 默认情况下,表达式产生的值如果超出了目标类型的范围,将会产生两种情况: ?常数表达式将导致编译时错误. ...

  10. display:inline-block解决文字有间隙问题

    定义:display:inline-block是使元素以块级元素的形式呈现在行内.意思就是说,让这个元素显示在同一行不换行,但是又可以控制高度和宽度,这相当于内联元素的增强. 但是display:in ...