首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

Linux下通用线程池的创建与使用(上)

http://www.oklinux.cn  2006-01-01  来源: 赛迪网技术社区  张中庆   会员收藏  游客收藏  【 】 











理解系统组件

下面我们分开来了解系统中的各个组件。

CThreadManage

CThreadManage的功能非常简单,其提供最简单的方法,其类定义如下:

class CThreadManage 

{ 

private: 

CThreadPool* m_Pool; 

int m_NumOfThread; 

protected: 

public: 

void SetParallelNum(int num); 

CThreadManage(); 

CThreadManage(int num); 

virtual ~CThreadManage(); 

void Run(CJob* job,void* jobdata); 

void TerminateAll(void); 

};

其中m_Pool指向实际的线程池;m_NumOfThread是初始创建时候允许创建的并发的线程个数。另外Run和TerminateAll方法也非常简单,只是简单的调用CThreadPool的一些相关方法而已。其具体的实现如下:

CThreadManage::CThreadManage(){ 

m_NumOfThread = 10; 

m_Pool = new CThreadPool(m_NumOfThread); 

} 

CThreadManage::CThreadManage(int num){ 

m_NumOfThread = num; 

m_Pool = new CThreadPool(m_NumOfThread); 

} 

CThreadManage::~CThreadManage(){ 

if(NULL != m_Pool) 

delete m_Pool; 

} 

void CThreadManage::SetParallelNum(int num){ 

m_NumOfThread = num; 

} 

void CThreadManage::Run(CJob* job,void* jobdata){ 

m_Pool->Run(job,jobdata); 

} 

void CThreadManage::TerminateAll(void){ 

m_Pool->TerminateAll(); 

}

CThread

CThread 类实现了对Linux中线程操作的封装,它是所有线程的基类,也是一个抽象类,提供了一个抽象接口Run,所有的CThread都必须实现该Run方法。CThread的定义如下所示:

class CThread 

{ 

private: 

int m_ErrCode; 

Semaphore m_ThreadSemaphore; //the inner semaphore, which is used to realize 

unsigned long m_ThreadID; 

bool m_Detach; //The thread is detached 

bool m_CreateSuspended; //if suspend after creating 

char* m_ThreadName; 

ThreadState m_ThreadState; //the state of the thread 

protected: 

void SetErrcode(int errcode){m_ErrCode = errcode;} 

static void* ThreadFunction(void*); 

public: 

CThread(); 

CThread(bool createsuspended,bool detach); 

virtual ~CThread(); 

virtual void Run(void) = 0; 

void SetThreadState(ThreadState state){m_ThreadState = state;} 

bool Terminate(void); //Terminate the threa 

bool Start(void); //Start to execute the thread 

void Exit(void); 

bool Wakeup(void); 

ThreadState GetThreadState(void){return m_ThreadState;} 

int GetLastError(void){return m_ErrCode;} 

void SetThreadName(char* thrname){strcpy(m_ThreadName,thrname);} 

char* GetThreadName(void){return m_ThreadName;} 

int GetThreadID(void){return m_ThreadID;} 

bool SetPriority(int priority); 

int GetPriority(void); 

int GetConcurrency(void); 

void SetConcurrency(int num); 

bool Detach(void); 

bool Join(void); 

bool Yield(void); 

int Self(void); 

};
共3页: 上一页 [1] 2 [3] 下一页

上一篇:Linux桌面系统开发者求同存异谋发展   下一篇:Linux下通用线程池的创建与使用(下)


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux桌面系统开发者求同存异谋发展
·Linux下通用线程池的创建与使用(下)
·教你制作可以随身携带的FreeBSD系统
·GNU/Linux开发者需要从桌面突破
·用Perl管理Linux操作系统的配置文件
·如何编译一个操作系统内核-Ubuntu方式
·Linux的系统过程中的LILO和GRUB(上)
·精华:升级Linux操作系统内核奋斗记
·Linux系统中使用SystemTap调试内核
·使用Ioctl向Linux内核传递参数的方法
·Liunx操作系统编程之Const使用详解
·Linux中Gnome与KDE字体大小不同的解决
·Linux操作系统下的软中断问题分析
·Linux操作系统下的汇编程序设计简介
·Linux的高效的数据传输技术-Relay
·Linux系统内核定时器机制详解(下)
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·学习园地:Linux系统内核中判断大小的
·系统编译:如何给Make命令来传递参数
·Linux 2.6内核中sysfs文件系统简单概述
·Fedora 8 Linux系统的内核配置注意事项
·升级Linux内核的一般步骤方法
·Linux发行版知识普及:三个版本的CPUID
·编译安装Virtualbox驱动模块
· Linux系统的内核解读入门
·新手学堂 Linux系统的内核解读入门
·Linux系统内核中网络参数的意义及其应
·走向Linux系统高手之路 内核编译过程解
·Linux系统中安装内核的方法详细介绍
  阅读排行
· 深入理解LINUX内核中文版下载地址
·基于S3C44B0微处理器的uClinux内核引导
·Kernel command using Linux system ca
·Linux 2.6内核如何武装Fedora Core 2
·Process priority and control on AIX
·Linux操作系统的内核编译内幕详解
·推荐:Linux用户态与内核态的交互
·通过振动向Linux ThinkPad传输信息
·Linux操作系统源代码详细分析(二)
·Linux系统内核接收以太帧的处理程序
·Linux and symmetric multiprocessing
·主流嵌入式Linux系统下GUI解决方案
·揭秘Linux内核调试器之内幕
·用命令行加挂Linux的文件系统简介
·Linux内核和核心OS组件的测试与分析
网摘收藏: