找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3227|回复: 4

新手的问题比较多:关于多线程,请高手凭经验帮忙

[复制链接]
发表于 2010-3-19 17:06:08 | 显示全部楼层 |阅读模式
首先谢谢前面热心为我解答问题的几位大佬:)
如前面帖子所述,我是接手了一个用ACE写的server程序,我的首要任务是搞懂这个程序,对ace 的学习就只能用到哪里学到哪里,所以会问一些比较缺乏常识的问题,请各位勿怪。
现在我首先要搞清楚程序的开多线程的策略。因为这是一个视频聊天室的server程序,要转发大量的视频信号,所以肯定是要开很多线程的,但是我找不到它开新线程的代码在哪里。整个程序采用了ACE的框架,首先是以一个ACE_Task派生类创建了一个ACE_Singleton对象,初始化后没有调用activate,而是显式地调用svc,svc里调用了run_reactor_event_loop。请高手告诉我:

1、在这样的使用方式下,ACE_task里面是不会自动开新线程的吧?
2、如果是在其它地放开的线程,通常用哪些函数?我希望在代码里直接搜索到调用这些函数的地方,再细读那部分代码。
 楼主| 发表于 2010-3-19 17:33:56 | 显示全部楼层

回复 #1 halleyzhang 的帖子

补充一下,有个地方调用了另一个ACE_Task对象的activate(),但是没有任何参数,我发现n_threads参数的默认值为1,这样ACE也不会自动开新线程吧?
 楼主| 发表于 2010-3-19 19:25:53 | 显示全部楼层

回复 #1 halleyzhang 的帖子

好像弄清楚了,貌似是这样的:它有一个ACE_Task子类,在连接数多时会创建很多个对象,每个对象在创建的时候调一下activate()产生一个线程。因为我没有模拟很多用户的情况,只启动一个客户端配合来跟踪server程序,所以根来根去只有一个线程,暂且这样认为了。
发表于 2010-3-19 22:49:12 | 显示全部楼层
我建议你,哪怕先拣重要的看,把C++网络编程卷1、卷2,买下来,看一看。帮助会很大的。
 楼主| 发表于 2010-3-22 12:01:24 | 显示全部楼层
多谢指教。找了一下,不用买,csdn就有下载,先研读一下
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-22 12:23 , Processed in 0.013546 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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