对 pthread 做的一个简陋封装
参考自 pthreadcc 库的 ThreadBase 类
用法:继承该类,重写 execute 方法,调用父类的 launchThread 方法启动线程
Thread.h
//
// Thread.h
// MinaCppClient
//
// Created by yang3wei on 7/23/13.
// Copyright (c) 2013 yang3wei. All rights reserved.
// #ifndef __MinaCppClient__Thread__
#define __MinaCppClient__Thread__ #include <netdb.h> class Thread {
public:
Thread();
~Thread(); void launchThread(); protected:
virtual void* initialise();
virtual void* execute();
virtual void cleanUp(); private:
pthread_t m_oThread;
static void* threadMain(void* in_pArg);
}; #endif /* defined(__MinaCppClient__Thread__) */
Thread.cpp
//
// Thread.cpp
// MinaCppClient
//
// Created by yang3wei on 7/23/13.
// Copyright (c) 2013 yang3wei. All rights reserved.
// #include "Thread.h"
#include <pthread.h>
#include <stdio.h> Thread::Thread() {
// printf("Thread::Thread()\n");
} Thread::~Thread() {
// printf("Thread::~Thread()\n");
} void* Thread::initialise() {
// printf("Thread::initialise()\n");
return NULL;
} void* Thread::execute() {
// printf("Thread::execute()\n");
return NULL;
} void Thread::cleanUp() {
// printf("Thread::cleanUp()\n");
} void Thread::launchThread() {
// printf("Thread::launchThread()\n");
do {
pthread_attr_t tmp_oThreadAttr;
if (pthread_attr_init(&tmp_oThreadAttr) != 0) {
printf("launchThread()->pthread_attr_init() error!\n");
break;
}
if (pthread_attr_setdetachstate(&tmp_oThreadAttr, PTHREAD_CREATE_DETACHED) != 0) {
printf("launchThread()->pthread_attr_setdetachstate() error!\n");
pthread_attr_destroy(&tmp_oThreadAttr);
break;
}
if (pthread_create(&m_oThread, &tmp_oThreadAttr, &(Thread::threadMain), this) != 0) {
printf("launchThread()->pthread_create() error!\n");
break;
}
printf("Launch receive thread successfully!\n");
} while (0);
} void* Thread::threadMain(void* in_pThread) {
// printf("Thread::threadMain()\n");
Thread* t_pThread = (Thread*)in_pThread;
void* t_pRetVal; if ((t_pRetVal = t_pThread->initialise()) == NULL) {
t_pRetVal = t_pThread->execute();
} t_pThread->cleanUp(); return t_pRetVal;
}
对 pthread 做的一个简陋封装的更多相关文章
- 做为一个前端工程师,是往node方面转,还是往HTML5方面转
文章背景:问题本身来自于知乎,但是我感觉这个问题很典型,有必要把问题在整理一下,重新分享出来. 当看到这个问题之前,我也碰到过很多有同样疑惑的同学,他们都有一个共同的疑问该学php还是nodejs,包 ...
- React Native技术做的一个项目“微笑阅读”
最近用React Native做了一个APP应用,有点心得: React Native确实比Hybrid应用渲染快,响应快,用户体验更好: React Native比原生简单多了,会Js就可以了,开发 ...
- pthread库实现一个简单的任务池
pthread库实现一个简单的任务池 类关系图: 说明: 1:TaskManager类管理Task类,Task类是一个纯虚类; 2:ThreadManager类管理Th ...
- 最近做了一个短网址服务 di81.com
最近做了一个短网址服务: di81.com 项目中有一处需求,需要把长网址缩为短网址,把结果通过短信.微信等渠道推送给客户.刚开始直接使用网上现成的开放服务,然后在某个周末突然手痒想自己动手实现一 ...
- 我用开天平台做了一个字符串检查API,hin 简单~~
摘要:本文使用了工作台的API全生命周期管理和函数管理功能,编写字符串检查的函数,实现了API的快速创建和发布. 本文分享自华为云社区<[我用开天平台做了一个字符串检查API>,作者:人类 ...
- 做了一个sublime text插件
做了一个sublime text插件,可以方便地查看C++/python的调用图.插件的演示视频在这里: http://list.youku.com/albumlist/show?id=2820226 ...
- bootstrap做了一个表格
花了一下午做了一个表格: 大致是这样: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf ...
- PHP MVC简单介绍,对PHP当前主流的MVC做了一个总结
东抄西抄,对PHP当前主流的MVC做了一个总结PPT. 希望对初学者有点帮助! PHP MVC初步.ppt
- 用MVVM做了一个保存网页的工具-上篇
前言: 你是否有过收藏了别人博客或文章,当想用的时候却找不到?你是否有过收藏了别人博客或文章,却因为没有网络而打不开网页?OK,下面是我做的一个工具,有兴趣的同学们可以download 玩下,哈哈^. ...
随机推荐
- Node.js meitulu图片批量下载爬虫1.02版
以前版本需要先查看网页源码,然后肉眼找到图片数量和子目录,虽说不费事,但多少有点不方便. 于是修改了一下,用cheerio自己去找找到图片数量和子目录,只要修改页面地址就行了.至此社会又前进了一步. ...
- Nehe OpenGL lesson 8
lesson8 Blending: http://nehe.gamedev.net/tutorial/lessons_06__10/17010/ (也许须要特殊手段訪问) There was a re ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何把FBD功能块转换成ST语言
假如我定义了一个MC_Power的标准功能块,我想知道它对应的ST语言 在MAIN(ST语言界面下)右击,Input Assistant,然后找到Standard Function Blocks, ...
- UNIX管道符
在Unxi操作系统中,标准输入和标准输出是外壳程序中可以单独使用的两个独立流.但是有时候系统工程师需要让某些特定的输入源不起作用.当系统工程师在开发一些实用的脚本程序的过程中,经常需要用到. 一. ...
- C语言-求最大值
#include<stdio.h> void main() {int a,b,c,d; scanf("%d,%d,%d",&a,&b,&c); ...
- redis源代码分析(5)——aof
前面几篇基本介绍了redis的主要功能.流程.接下来是一些相对独立的部分,首先看一下持久化. redis持久化支持两种方式:RDB和AOF,我们首先看一下AOF的实现. AOF(Append only ...
- VIM-不常用或不知道的技巧
cc 清除一行 并在本行编辑, 同理 cw :32,65d 多行删除 g/pattern/d 删除包含特定字符的行 v/pattern/d 删除不包含指定字符的行 等同于 g!/pattern/d y ...
- 【MyBatis学习03】原始dao开发方法及其弊端
上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...
- 构建基于Javascript的移动web CMS入门——简单介绍
看到项目上的移动框架,网上寻找了一下,发现原来这些一開始都有. 于是,找了个演示样例開始构建一个移动平台的CMS--墨颀 CMS,方便项目深入理解的同一时候.也能够自己维护一个CMS系统. 构建框架 ...
- ansible 简单用法
ansible批量复制文件到服务器 ansible -i /etc/ansible/hosts.test test -m copy -a "src=/tmp/test dest=/usr/b ...