C语言如何写出10个线程?
答案:3 悬赏:20 手机版
解决时间 2021-01-06 07:11
- 提问者网友:相思似海深
- 2021-01-05 16:03
C语言如何写出10个线程?
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-01-05 17:09
#include
#include
#include
DWORD CALLBACK ThreadProc(LPVOID lpParam)
{
printf("thread %d is running\n",*(int*)lpParam);
return 0;
}
int main()
{
HANDLE pThread[10];
int thread[10];
for(int i=0;i<10;i++)
{
thread[i]=i;
pThread[i]=CreateThread(NULL,0,ThreadProc,thread+i,0,NULL);
}
WaitForMultipleObjects(10,pThread,TRUE,INFINITE);
getch();
return 0;
}
#include
#include
DWORD CALLBACK ThreadProc(LPVOID lpParam)
{
printf("thread %d is running\n",*(int*)lpParam);
return 0;
}
int main()
{
HANDLE pThread[10];
int thread[10];
for(int i=0;i<10;i++)
{
thread[i]=i;
pThread[i]=CreateThread(NULL,0,ThreadProc,thread+i,0,NULL);
}
WaitForMultipleObjects(10,pThread,TRUE,INFINITE);
getch();
return 0;
}
全部回答
- 1楼网友:鸠书
- 2021-01-05 18:47
创建十个不就可以了吗追问怎么创建?在循环语句中加入fork()吗?然后创建之后怎么使用它们和区别它们?如果是2个的话还好区别,要是多个的话怎么区别?追答void *thread1()
{
printf("This is thread1\n");
//你的代码
}
void *thread2()
{
printf("This is thread2\n");
//你的代码
}
int main()
{
pthread_t t1,t2;
int ret;
pthread_create(&t1,NULL,(void *)thread1,NULL);
pthread_create(&t2,NULL,(void *)thread2,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
}
类似于这样的追问我想问一下pthread_create函数是怎样做到创建线程的?追答你在主函数上面把线程函数写好,像我上面写的void *thread1()这样,然后pthread_create(&t1,NULL,(void *)thread1,NULL);这样就创建了啊。追问想问的是pthread_create函数的具体实现的源码。追答我是在linux下写的,是系统函数,我直接调用就好了
{
printf("This is thread1\n");
//你的代码
}
void *thread2()
{
printf("This is thread2\n");
//你的代码
}
int main()
{
pthread_t t1,t2;
int ret;
pthread_create(&t1,NULL,(void *)thread1,NULL);
pthread_create(&t2,NULL,(void *)thread2,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
}
类似于这样的追问我想问一下pthread_create函数是怎样做到创建线程的?追答你在主函数上面把线程函数写好,像我上面写的void *thread1()这样,然后pthread_create(&t1,NULL,(void *)thread1,NULL);这样就创建了啊。追问想问的是pthread_create函数的具体实现的源码。追答我是在linux下写的,是系统函数,我直接调用就好了
- 2楼网友:天凉才是好个秋
- 2021-01-05 17:49
用循环就可以了
手敲也行追问创建之后怎么使用它们和区别它们?如果是2个的话还好区别,要是多个的话怎么区别?追答CWinThread* AfxBeginThread()
会返回 CWinThread 指针,然后通过指针指向的m_hThread 进行控制追问可不可以不要用MFC的东西,假如我们自己要实现的话,该怎么办?追答//////////////
while(1)
{
if(IsRunOne)//IsRunOne 全局变量
{
....
....
...
}
Sleep(100);
}
///////////////追问不太明白,没看到fork()函数。追答就是把 代码 放到线程函数 里面;
通过 控制 IsRunOne 的真假,使该线程是否 执行 if里面的代码
手敲也行追问创建之后怎么使用它们和区别它们?如果是2个的话还好区别,要是多个的话怎么区别?追答CWinThread* AfxBeginThread()
会返回 CWinThread 指针,然后通过指针指向的m_hThread 进行控制追问可不可以不要用MFC的东西,假如我们自己要实现的话,该怎么办?追答//////////////
while(1)
{
if(IsRunOne)//IsRunOne 全局变量
{
....
....
...
}
Sleep(100);
}
///////////////追问不太明白,没看到fork()函数。追答就是把 代码 放到线程函数 里面;
通过 控制 IsRunOne 的真假,使该线程是否 执行 if里面的代码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯