返回信息流我对c++多线程编程不是很熟,在项目中遇到了如下的问题,在网上查了一下,也没有找到合适的解决办法。而项目又赶的很急,所以在这里请教一下。
我想从一个队列中取n个ip地址,并逐个对它进行处理,处理方法都是一样的。想用多线程来实现。
1,因为不知道n的大小,请问线程数应该如何设定?我是这样考虑的,不管n多大,就固定线程数为一个定值,比如5,然后逐个的取出ip后分别传给这5个线程,让其去处理,等处理完了之后,再接着把剩下的ip地址传给它。请问这种方法合适吗?或者,有没有更好的方法?
2,线程间通信的问题。当辅助线程处理完了之后,如何通知主线程?主线程又如何把剩下的ip地址传给辅助线程?
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #6843同步于 2008/5/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个c++多线程的问题
xBox
2008/5/15镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 guying 的大作中提到: 】
: 不要主线程呢?开n个线程,每个线程都反复遍历队列,只要ip没人处理就处理,每个ip要加个锁。
这个。。效率应该跟不用线程差不多。
【 在 xBox 的大作中提到: 】
: 我对c++多线程编程不是很熟,在项目中遇到了如下的问题,在网上查了一下,也没有找到合适的解决办法。而项目又赶的很急,所以在这里请教一下。
: 我想从一个队列中取n个ip地址,并逐个对它进行处理,处理方法都是一样的。想用多线程来实现。
: 1,因为不知道n的大小,请问线程数应该如何设定?我是这样考虑的,不管n多大,就固定线程数为一个定值,比如5,然后逐个的取出ip后分别传给这5个线程,让其去处理,等处理完了之后,再接着把剩下的ip地址传给它。请问这种方法合适吗?或者,有没有更好的方法?
: ..................
我认为可以在主线程离开一个循环
while ( 队列中还有IP)
{
_beginthreadex() //起一个线程从队列里取线程,并处理
}
而且这样只用定义一个线程函数
【 在 guying 的大作中提到: 】
: 不要主线程呢?开n个线程,每个线程都反复遍历队列,只要ip没人处理就处理,每个ip要加个锁。
我觉得这么做效率不是很高。。。。
【 在 kangkai810 的大作中提到: 】
: 我认为可以在主线程离开一个循环
: while ( 队列中还有IP)
: {
: ...................
这么做,是不是还是单线程啊?