热门职位程序员 美工 市场 策划

一个简单的线程管理机制
2008年04月14日 11:45:45   【发表评论/查看评论

    周末,总是有点那么的无聊。闲来没事,想想每次自己要进行多线程编程时的痛苦,也并借机考虑设计了一个简单的线程管理方式。 
    没什么好说的,首先想想线程的创建,每次都要CreateThread,传递一堆的参数,还得没事查查MSDN,唉,效率低啊。反正,对于我来说,线程基本都是缺省优先级、缺省安全的。不如把这些一起封装了。
    不多说,C++不用对象机制用什么?顺便借鉴一下java。来个实际线程就是run,启动采用start。
class thread
{
public:
     thread( void );
     virtual ~thread( void );
 
     virtual void run() = 0;
 
     void start();
};
     这个也就是最基本的,基于对象的线程基类了。子类只需要实现run作为线程,调用start,就可以启动线程了。线程的所需参数,很简单,基于对象,有需要的,做为扩展类的成员变量——成员资源来访问。
    就这么简单?线程访问最大的问题——资源共享。那好,很容易想到互斥量。还有java的关键字synchronized,我们也就加一个锁的概念。
class thread
{
public:
     thread( void );
     virtual ~thread( void );
 
     virtual void run() = 0;
 
     void start();
 
     static void syncLock( void *res,bool lock );
};
    这样,在最基本的线程资源——HANDLE,就可以被管理了,资源的访问也可以通过lock和unlock来保护了。
    实际中,很多时候,我们希望能限制或知道有多少线程在运行,那么再加一个运行线程记数功能。大多时候,往往是采用线程池,而且会根据CPU数目,决定运行的线程数目。我们干脆,再提供一个功能,限制对象上可以允许同时运行的线程数目。那好,改为(同时加上一些保护和注解):
typedef unsigned int U32;
/**
 * 线程对象
 * 提供基于对象的线程处理接口
 */
class thread
{
public:
     /**
      * 线程基于对象的构造
      * para max 允许最多同时运行线程数
      */
     explicit thread( U32 max = -1 );
     virtual ~thread( void );
 
     /**
      * 启动一个线程
      * @return 启动成功否
      */
     bool start( void );
 
     /**
      * 对象上启动的线程数
      * @return 线程数
      */
     U32 count( void );
    
     /**
      * 线程执行函数
      * @return 无
      */
     virtual void run( void ) = 0;
 
     /**
      * 为对象加解锁
      * @return 无
      * @para res 要加解锁的资源对象
      * @para lock 加锁还是解锁
      */
     static void syncLock( void *res,bool lock );
 
private:
     thread( const thread &t );
     thread &operator=( const thread &t );
 
     void *m_datas;
};
    至于实现,我想不难。别忘了,对象销毁时要等待所有线程结束,并释放HANDLE资源哦。否则,线程会访问错误的内存,还有线程HANDLE被泄漏的。(千万别死锁了,自己实现时就因为资源锁来锁去,锁死了。)
    哈哈,就这么简单,一个简单的线程创建、管理就实现了。至于void *,你可以根据自己的实现去定义数据结构。
东西简单,也就不贴出cpp源码了,关键是个想到、做到的问题。
    头文件和lib,放在rar包吧,给大家一个实现后的参考。如果,发现有什么问题,可以随时和我联系。或者,您有更好的想法,并且愿意和我分享,那真是举目明月,尽展抒怀。假如,您对有些语法,比如explicit不明,那么,建议您先看看有关C++的语法或者找您周围的高手,让他们洗脑一番。:}
谢谢阅读,好就此打住。

配套程序下载:http://dev.gameres.com/Program/Other/thread.rar

来源:游戏梦网

【编辑: 布谷布谷 】

 

热门招聘

最新应聘信息

相关新闻
·上海首批经适房选址划定 将在二季度内开工建设 [04-13]
·奥运圣火不会熄灭 风火反挂坚持到底 [04-10]
·业内人士:中国房地产投资全球化面临六大挑战 [04-09]
·关于加强廉租住房质量管理的通知 [04-08]
·3.硬伤三:程序员比策划员强?! [04-08]
·国土资源部:坚决停止供应别墅类房地产开发用地 [04-06]
·法眼看热点:网络虚拟财产应否立法保护 [03-27]
·北京住房保障多管齐下 经适房两限房拟租售并举 [03-26]
·诛仙反外挂系统更新 图形化简单更准确 [03-25]
·经济适用房的申请程序 [03-25]

 

© 2001-2008 www.17173.com All Rights Reserved.
建议意见:玩家留言区 商务合作:客户留言区
广告专线:0591-87878497 客服电话:0591-87826743 关于我们 设为首页 玩家客服