找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3626|回复: 1

创建了挂起状态的线程没有resume就自动执行,请大家解惑

[复制链接]
发表于 2007-12-11 22:05:37 | 显示全部楼层 |阅读模式
main函数里创建了一个挂起状态的线程,代码如下:int create_result = conn_handler.activate(
                                THR_NEW_LWP | THR_JOINABLE | THR_SUSPENDED,
                                1,1,
                                ACE_THR_PRI_OTHER_DEF);
        ACE_ASSERT(create_result == 0);
        ACE_TRY_CHECK
测试时故意没有调用resume,可程序运行时这个线程时常也会执行。
(我在svc函数里加了输出信息,可以观察这个线程是否会执行)
初学ACE不久,请前辈们解惑。
系统:Red Hat Enterprise Linux ES release 3
在google的新闻组论坛上得知:
THR_SUSPENDED 标志不是所有平台上都支持的,特别象linux这类实现POSIX的Pthread module的平台
那现在的问题是,这个特性我用不了(目标平台就是linux redhat),还有什么好的方法
能实现让一个线程先run起来,然后别的再run呢。也就是让多个线程按顺序启动,而不是
按一定顺序执行(这个是用同步机制来实现)。
我已经被困扰好几天了,还希望各位能路过看看,给些建议和提示,谢谢
 楼主| 发表于 2007-12-11 22:05:54 | 显示全部楼层
查看ACE里面,关于线程安全和同步的内容。
ACE_Barrier是否可以做到呢?一起启动、一起退出。
或者用ACE_Event,一个线程启动后,触发事件,而另外一个线程等待这个事件有信号,才进行操作。
问题解决了,放弃了原来使用ACE_Task_Base派生类的activate()激活

线程的方法,直接用ACE_Thread_Manager创建,先保证所有的线程都可以running。

我刚接触ACE不久,看着Event感觉有点复杂,就先用ACE_Condition来实现按序执行。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 07:17 , Processed in 0.015926 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表