通过多线程扫描局域网内的所有机器怎么实现?

ju_feng 2002-12-29 05:22:09
以前做过总有一些bug;

不知道具体怎么实现

主要碰到一些如下的难题;

我建立一个线程通过该线程创建了50个线程来扫描局域网内的机器

怎样判断当前的线程已经扫描完毕。

我创建的50个线程都是调用了同一个threadstart代理的实例。怎样让他不相互修改数据,原来的时候我写了一个类传递参数调用可以实现 不知道在一个类里面怎么实现。

最好有例子
...全文
46 点赞 收藏 4
写回复
4 条回复
ajn_sailing 2002年12月30日
up
回复 点赞
icelight 2002年12月29日
Q: 怎样判断当前的线程已经扫描完毕?怎样让他不相互修改数据?

A: 你先说清楚,你传给线程函数的参数是什么结构。每次传给线程的参数是不是NEW得来。如果不是NEW得到的当然会被线程们互相修改数据。

一个简单的SAMPLE:
class ThreadInfo
{
public:
bool m_bIsFinished; //判断当前的线程已经扫描完毕
HANDLE m_hThread; //当前线程的句柄
sockaddr addr; //目标地址
ThreadInfo()
{
m_bIsFinished = false;
m_hThread = NULL;
}
}

主线程:
ThreadInfo* arrayThreadInfo[50];
......
for(int i=0;i<50;i++)
{
arrayThreadInfo[i] = new ThreadInfo;
arrayThreadInfo[i].m_hThread=_beginthread(subThreadPing,0,arrayThreadInfo[i]);
}
回复 点赞
qrlvls 2002年12月29日
http://www.vckbase.com/上面都有源代码下载
回复 点赞
上海老李 2002年12月29日
你单线程的实现没?就是把检测放到另一个线程呗!
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7880

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告