ACE_Task作为ACE框架库中最重要最基础的东西一定要掌握清楚哦,根据我在实际项目中的心得写一个关于ACE_Task的备忘写在这里希望对大家有用。
ACE_Task的子类ACE_Task_Base提供了基本的线程回调机制也就是虚函数svc,其实这个是一个回调钩子,你只需把你准备在线程中作的事情写在重载的svc中就可以了,启动现成的时候调用active就一切万事大吉了,但是你要注意几点可能引起死锁的地方:
1 在ACE线程中只提供了unix/linux下的杀死线程的方法kill,而在win平台上并没有提供kill方法,这就出现了一个可能的隐患,如果你的程序在svc中死锁,你将永远失去对这个线程的控制,更严重的还会发生一连串的死锁,最终锁住你的应用。千万注意哦,不是吓唬你啊。
2 对ACE_Task中close(int flags);虚函数的重载一定要注意,这里有个非常隐秘的陷阱哦,如果你不好好对待同样存在死锁的危险,具体原因你们自己去想,暂时不说,哈哈。这个flags非常的关键,而且你要时刻注意针对flags做出正确的反应哦,否则死锁在等着你。
多线程编程的功力其实就体现在对锁的应用和对死锁情况的敏感程度上,呵呵就说这么多!有时间写一篇“多线程N大规则”,奉献给大家。
阅读(981) | 评论(0) | 转发(0) |