多线程(小弟我也刚学,希望能帮帮小弟我)
多线程(我也刚学,希望能帮帮我)
是这样的,我看迅雷,或者是一些端口扫描软件!
他们都有一些共同点,就是你可以设置他们可以开启多少个线程!
并且可以自己随意关闭这些线程!
我看了这一段代码“
#include <windows.h>
DWORD WINAPI ThreadFunc(LPVOID);
void main()
{
HANDLE hThread;
DWORD threadId;
hThread=CreateThread(NULL,0,hThreadFunc,0,0,&threadId);
printf( "Thread running ");
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
//....
}
我想随意启动N个这样的线程,有该怎么写呢?
并且要一个可以关闭启动的这些线程的函数!
有该怎么写呢
那个大哥帮我完善一下好吗?
我在这里先谢谢了
------解决方案--------------------
www.codeproject.com/threads/threadpool.asp
support.microsoft.com/kb/197728
------解决方案--------------------
简单的把hThread和threadid变成数组就可以保存多个线程的句柄和id
然后循环调用CreateThead即可产生多个线程
可以用TeminateThread杀死创建的线程
------解决方案--------------------
建议不用 TeminaterThread 杀死线程, 通过信号量通知线程自己结束, 这样不会伤害线程内的任务,从容退出.
------解决方案--------------------
没有调试过,大概是这个样子
#include <windows.h>
#define max_thread_cnt 10
DWORD WINAPI ThreadFunc(LPVOID);
void main()
{
HANDLE hThread[max_thread_cnt];
DWORD threadId[max_thread_cnt];
DWORD dwRet;
int i, j;
for( i = 0; i < max_thread_cnt; i ++ )
{
hThread[i]=CreateThread(NULL,0,hThreadFunc,0,0,&threadId[i]);
printf( "Thread[%d] running\n ", i );
}
while( i > 0 )
{
dwRet = WaitForMulitpleObject( i, hThread, FALSE, INFINITE );
if( dwRet > = WAIT_OBJECT_0 )
{
CloseHandle( hThread[dwRet - WAIT_OBJECT_0] );
for( j = dwRet - WAIT_OBJECT_0; j < i-1; j ++ )
hThread[j] = hThread[j+1];
i--;
}
}
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
//....
}
是这样的,我看迅雷,或者是一些端口扫描软件!
他们都有一些共同点,就是你可以设置他们可以开启多少个线程!
并且可以自己随意关闭这些线程!
我看了这一段代码“
#include <windows.h>
DWORD WINAPI ThreadFunc(LPVOID);
void main()
{
HANDLE hThread;
DWORD threadId;
hThread=CreateThread(NULL,0,hThreadFunc,0,0,&threadId);
printf( "Thread running ");
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
//....
}
我想随意启动N个这样的线程,有该怎么写呢?
并且要一个可以关闭启动的这些线程的函数!
有该怎么写呢
那个大哥帮我完善一下好吗?
我在这里先谢谢了
------解决方案--------------------
www.codeproject.com/threads/threadpool.asp
support.microsoft.com/kb/197728
------解决方案--------------------
简单的把hThread和threadid变成数组就可以保存多个线程的句柄和id
然后循环调用CreateThead即可产生多个线程
可以用TeminateThread杀死创建的线程
------解决方案--------------------
建议不用 TeminaterThread 杀死线程, 通过信号量通知线程自己结束, 这样不会伤害线程内的任务,从容退出.
------解决方案--------------------
没有调试过,大概是这个样子
#include <windows.h>
#define max_thread_cnt 10
DWORD WINAPI ThreadFunc(LPVOID);
void main()
{
HANDLE hThread[max_thread_cnt];
DWORD threadId[max_thread_cnt];
DWORD dwRet;
int i, j;
for( i = 0; i < max_thread_cnt; i ++ )
{
hThread[i]=CreateThread(NULL,0,hThreadFunc,0,0,&threadId[i]);
printf( "Thread[%d] running\n ", i );
}
while( i > 0 )
{
dwRet = WaitForMulitpleObject( i, hThread, FALSE, INFINITE );
if( dwRet > = WAIT_OBJECT_0 )
{
CloseHandle( hThread[dwRet - WAIT_OBJECT_0] );
for( j = dwRet - WAIT_OBJECT_0; j < i-1; j ++ )
hThread[j] = hThread[j+1];
i--;
}
}
}
DWORD WINAPI ThreadFunc(LPVOID p)
{
//....
}