[多线程]

原型:void pthread_exit(void *retval)
用法:#include <pthread.h>
功能:使用函数pthread_exit退出线程,这是线程的主动行为;由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放,但是可以用pthread_join()函数(下篇博客中讲到)来同步并释放资源。
说明:retval:pthread_exit()调用线程的返回值,可由其他函数如pthread_join来检索获取。
举例:

 

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void * thread_1(void * arg)
{
	int i = 0;
	for(i=0; i<7; i++)
	{
		printf("This is a thread_1\n");
		if(i == 2)
			pthread_exit(0);
		sleep(1);	
	}	
}

void * thread_2(void * arg)
{
	int i;
	for(i=0; i<3; i++)
	{
		printf("This is a thread_2\n");
	}	
	pthread_exit(0);
}

int main()
{
	pthread_t id_1;
	pthread_t id_2;
	
	int i, ret;
	
	// Create thread 1
	ret = pthread_create(&id_1, NULL, &thread_1, NULL);
	if(ret != 0)
	{
		printf("thread create error.\n");
		return -1;	
	}	
	
	// Create thread 2
	ret = pthread_create(&id_2, NULL, &thread_2, NULL);
	if(ret != 0)
	{
		printf("thread2 create error.\n");
		return -1;	
	}
	
	pthread_join(id_1, NULL);
	pthread_join(id_2, NULL);
	
	return 0;
}

  

你可能感兴趣的:([多线程])