新手的问题比较多:关于多线程,请高手凭经验帮忙
首先谢谢前面热心为我解答问题的几位大佬:)如前面帖子所述,我是接手了一个用ACE写的server程序,我的首要任务是搞懂这个程序,对ace 的学习就只能用到哪里学到哪里,所以会问一些比较缺乏常识的问题,请各位勿怪。
现在我首先要搞清楚程序的开多线程的策略。因为这是一个视频聊天室的server程序,要转发大量的视频信号,所以肯定是要开很多线程的,但是我找不到它开新线程的代码在哪里。整个程序采用了ACE的框架,首先是以一个ACE_Task派生类创建了一个ACE_Singleton对象,初始化后没有调用activate,而是显式地调用svc,svc里调用了run_reactor_event_loop。请高手告诉我:
1、在这样的使用方式下,ACE_task里面是不会自动开新线程的吧?
2、如果是在其它地放开的线程,通常用哪些函数?我希望在代码里直接搜索到调用这些函数的地方,再细读那部分代码。
回复 #1 halleyzhang 的帖子
补充一下,有个地方调用了另一个ACE_Task对象的activate(),但是没有任何参数,我发现n_threads参数的默认值为1,这样ACE也不会自动开新线程吧?回复 #1 halleyzhang 的帖子
好像弄清楚了,貌似是这样的:它有一个ACE_Task子类,在连接数多时会创建很多个对象,每个对象在创建的时候调一下activate()产生一个线程。因为我没有模拟很多用户的情况,只启动一个客户端配合来跟踪server程序,所以根来根去只有一个线程,暂且这样认为了。 我建议你,哪怕先拣重要的看,把C++网络编程卷1、卷2,买下来,看一看。帮助会很大的。 多谢指教。找了一下,不用买,csdn就有下载,先研读一下
页:
[1]