一个进程中的所有线程共享相同的全局内存,一个进程中的所有线程不仅共享全局变量,而且还共享:
进程指令,大多数数据,打开的文件(如描述字),信号处理程序和信号处置,当前工作目录,用户ID和组ID。
进程指令,大多数数据,打开的文件(如描述字),信号处理程序和信号处置,当前工作目录,用户ID和组ID。
但是,每个线程有自己的:线程ID,寄存器集合,包括程序计数器和栈指针栈(用于存放局部变量和返回地址),Errno,信号掩码,优先级。
主进程中结束,线程通通结束,所以,一般可以在主进程最后加上getchar(),进行杜塞。
线程创建:
int pthread_create( pthread_t *restrict thread, const pthread_attr_t *restrict attr,
例:
#include <stdio.h>
#include <pthread.h>
void *fun(void *arg)
{
int num =*(int *)arg;
printf("%d\n",num);
sleep(2);
pthread_exit(NULL);//退出线程
}
int main()
{
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr,5*1024*1024);// size_t stacksize设置栈大小,默认为10M
int i;
for(i =1;i<10;i++)
{
pthread_create(&tid,&attr,fun,&i);
usleep(200);
}
getchar();
return 0;
}