用C语言开多线程,想让多个相同的子线程同时运行,怎么实现
看了用HANDLE线程名;线程名=CreateThread(NULL,0,程序名,NULL,0,NULL);的方式开,但是我想让这一个程序作为多个线程一起开的话怎么办呢,...
看了用HANDLE 线程名;
线程名=CreateThread(NULL,0,程序名,NULL,0,NULL);
的方式开,但是我想让这一个程序作为多个线程一起开的话怎么办呢,总不能开200个 ,就写200次吧。
用循环的话线程名又不一样,而且这个线程名也不是数字,不能用for,然后i++那样。
求问C或C++,而不是java。 展开
线程名=CreateThread(NULL,0,程序名,NULL,0,NULL);
的方式开,但是我想让这一个程序作为多个线程一起开的话怎么办呢,总不能开200个 ,就写200次吧。
用循环的话线程名又不一样,而且这个线程名也不是数字,不能用for,然后i++那样。
求问C或C++,而不是java。 展开
3个回答
展开全部
工作线程是处理后台工作的,创建一个线程非常简单,只需要两步:实线线程函数和开始线程.不需要由CWinThread派生类,你可以不加修改地使用CWinThread。
AfxBeginThread有两种形式,一种是用来创建用户界面线程的,另一种就是用来创建工作线程的.为了开始执行线程,只需要向AfxBeginThread提供下面的参数就可以了.
1.线程函数的地址
2.传送到线程函数的参数
3.(可选的)线程的优先级,可参阅::SetThreadPriority
4.(可选的)线程开始时候的状态,可设置为CREATE_SUSPENEDE
5.(可选的)线程的安全属性,请参阅SECURITY_ATTRIBUTES
实例代码
UINT ThreadProc(LPVOID pParam)
{
return 0;//线程成功完成
}
CWinThread* AfxBeginThreadProc,//线程函数地址
LPVOID pParam,//线程参数
int nPriority=THREAD+PRIORITY_NOMAL,//线程优先级
int nStackSize=0,//线程堆栈大小,默认为1M
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);
AfxBeginThread有两种形式,一种是用来创建用户界面线程的,另一种就是用来创建工作线程的.为了开始执行线程,只需要向AfxBeginThread提供下面的参数就可以了.
1.线程函数的地址
2.传送到线程函数的参数
3.(可选的)线程的优先级,可参阅::SetThreadPriority
4.(可选的)线程开始时候的状态,可设置为CREATE_SUSPENEDE
5.(可选的)线程的安全属性,请参阅SECURITY_ATTRIBUTES
实例代码
UINT ThreadProc(LPVOID pParam)
{
return 0;//线程成功完成
}
CWinThread* AfxBeginThreadProc,//线程函数地址
LPVOID pParam,//线程参数
int nPriority=THREAD+PRIORITY_NOMAL,//线程优先级
int nStackSize=0,//线程堆栈大小,默认为1M
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL
);
展开全部
线程名其实是一个地址,所以你要开200个线程,就可以做两百次循环,就可以了CreateThread()的返回HANDLE报存在一个数组里就可以了
HANDLE hThread[200];
for(int i = 0;i<200; i++)
hThread[i] = CreateThread(NULL,0,程序名,NULL,0,NULL);
这样就可以了
HANDLE hThread[200];
for(int i = 0;i<200; i++)
hThread[i] = CreateThread(NULL,0,程序名,NULL,0,NULL);
这样就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以用字符串,比如说abcd再连上i作为线程名啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询