日期:2014-05-16  浏览次数:20583 次

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是加入调度队列:)
------解决方案--------------------
一般来说线程是最小的调度单元。
所以进程里面最少有一个线程。