MFC 中关于CWinThread应用

看到题目大家应该知道我想谈谈这个方式创建线程。
        熟悉MFC的童鞋,不用多说对这个方式创建线程一定很熟悉了,这里说说这个方式创建线程的好处与坏处。
好处:
    1.不用自己控制信息传递队列
    2.不用自己去处理线程结束标志
    3.不用自己去调用各种锁去处理各种各种信息传递时的共享数据
坏处:
    1.不便于理解多线程复杂的控制原理及其安全工作方式
    2.容易忽略底层核心以及业务安全的处理
    3.会误将线程与创建对话框或者其他程序一样等同(结果导致利用按键一直创建线程)。
    4.线程内如果调用了(摄像头等硬件)却不知道如何安全的释放,结果导致程序不定期崩溃。
当然系统开发中导致程序崩溃不止多线程这一种麻烦,但是MFC提供的这个类给了大家方便的同时,却也留给了大家这么多陷阱,我们在利用这个开发的同时,需要依然利用好我前面日志中写到的一些处理技巧。
        当然这里也给大家简略的介绍下这个东西的用法。
        (1)先定义一个类继承CWinThread,然后我们进行各种消息的定义以及如何处理,就像你在MFC中添加自己定义的消息一样。
        #define WM_YOURMESSAGE    WM_USER+x 这个宏
        BEGIN_MESSAGE_MAP(CCalculateThread, CWinThread)
ON_THREAD_MESSAGE(  WM_YOURMESSAGE  ,&CYOURThread::OnYOURMESSAGE)
END_MESSAGE_MAP()

        然后声明定义你的处理函数OnYOURMESSAG。

        (2)这样你只要在主线程的某个需要地方调用
        m_pYourThread = (CYOURThread*)AfxBeginThread(RUNTIME_CLASS(CYOURThread));
        这样就创建了你自己的线程,当然我们一般不能在按钮中去调用这个,有可能你用这个东西创建了很多次线程,当然如果你很清楚你为什么要这样做,你有足够的理由你也可以这么做。新手一般会范各种各样的错。
        
        (3)我们还要在某个地方来进行线程的安全退出,你也可以选择什么都不做,这样出现各种各样的崩溃都是有可能的。
           m_pYourThread ->PostThreadMessage( WM_QUIT, NULL, NULL );然后我们就可以退出了。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值