线程的修炼1

来源:互联网 发布:js array split 编辑:程序博客网 时间:2024/04/30 09:28
一个进程中的所有线程共享相同的全局内存,一个进程中的所有线程不仅共享全局变量,而且还共享:
进程指令,大多数数据,打开的文件(如描述字),信号处理程序和信号处置,当前工作目录,用户ID和组ID
但是,每个线程有自己的:线程ID,寄存器集合,包括程序计数器和栈指针栈(用于存放局部变量和返回地址),Errno,信号掩码,优先级
主进程中结束,线程通通结束,所以,一般可以在主进程最后加上getchar(),进行杜塞。
线程创建:
int pthread_create(  pthread_t *restrict thread const pthread_attr_t *restrict attr,
 void *(*start_routine)(void*), void *restrict arg );
       thread是线程ID,attr是线程属性(NULL为默认),
(*start_routine)(void*)为执行函数,arg为传入函数的参数。
例:


#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设置栈大小,默认为10Mint i;for(i =1;i<10;i++){pthread_create(&tid,&attr,fun,&i);usleep(200);}getchar();return 0;}


0 0
原创粉丝点击