读书人

linux 多线程初级有关问题

发布时间: 2012-02-11 09:51:35 作者: rapoo

linux 多线程初级问题
/* example.c*/
#include <stdio.h>
#include <pthread.h>
void thread(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
}
int main(void)
{
pthread_t id;
int i,ret;
ret=pthread_create(&id,NULL,(void *) thread,NULL);
if(ret!=0){
printf ("Create pthread error!\n");
exit (1);
}
for(i=0;i<3;i++)
printf("This is the main process.\n");
pthread_join(id,NULL);
return (0);
}
这里说有2线程,是否是指1,pthread_create的一线程 2,main()一线程,为什么main()也算一线程
pthread_join的意思是否是指,在main要等 pthread_create 的线程结束了,main才结束?

[解决办法]
main是主线程
[解决办法]
1. 你要运行这个example进入main(),必然有一线程,因此main()当然算一线程。
2. 是
[解决办法]
不是抢cpu是加入调度队列:)
[解决办法]
一般来说线程是最小的调度单元。
所以进程里面最少有一个线程。

读书人网 >UNIXLINUX

热点推荐