一、线程的概念
线程是进程中的一个独立的控制流,有环境电话一系列要执行的指令组成。
线程与进程的区别:
进程拥有独立的地址空间,是大量的数据(代码段、数据段、堆区、栈区)的集合;
线程自己不拥有系统资源,只拥有少量在运作中必不可少的资源;
线程必须依附进程而存在,所有的进程至少由一个线程组成。
线程的优点:占用资源少,通讯方便,可以提高应用程序响应,改善程序结构。
线程的属性:
初始化属性对象:
int pthread_attr_init(pthread_attr_t *attr);
x销毁某个已经初始化的线程属性对象
int pthread_attr_destroy(pthread_attr_t *attr);
void thread1(void)
{
int i=0;
for(i=0;i<6;i++)
{
printf("This is a pthread1.\n");
if(i==2)
pthread_exit(0);
sleep(1);
}
}
pthread_t id;
int i,ret;
//定义线程属性对象
pthread_attr_t attr;
//调用pthread_attr_init()对线程属性对象进行初始化
pthread_attr_init(&attr);
//设置线程属性对象里的scope属性
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
//设置线程属性对象里的detachstate属性
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
//ret=pthread_create(&id,&attr,(void *) thread1,NULL);
//创建线程,id1是线1的标识符,调用thread1()函数
ret=pthread_create(&id,NULL,(void *) thread1,NULL);
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
int pthread_create(pthread_t * thread,pthread_attr_t *attr,void *(*start_routine)(void *),void *arg);
如果成功返回0,否则返回非0