1.线程的创建
int pthread_creat(pthread_t *thread,pthread_attr_t *attr,
void*(*start_routine)(void *),void *arg)
其中:pthread_create创建一个线程,thread是用来表明创建线程的ID,attr指出
线程创建时候的属性,我们用NULL来表明使用缺省属性。
start_rountine函数指针是线程创建成功后开始执行的函数,arg是这个函数唯一一个参数。
表明传递给start_rountine的参数。
【备注】:一个进程中的每个线程都由一个线程ID标识,其数据类型是pthread_t(c常常是unsigned int).
如果新的线程创建成功,其ID将通过thread指针返回。
2.线程的退出:
void pthread_exit(void *retval);
等待线程结束:
int pthread_join(pthread *thread,void **thread_return);
强制中止一个线程
pthread_cancel(pthread_t thread);
实例分析:
传统的程序:
#include<stdio.h>
#define NUM 5
int main()
{
void print_msg(char*);
print_msg("HELLO");
return 0;
}
void print_msg(char*m)
{
int i;
for(i=0;i<NUM;i++)
{
printf("%s",m);
sleep(1);
}
}
用线程实现:
线程程序:
#include<stdio.h>
#include<pthread.h>
#define NUM 5
int main()
{
pthread_t t1,t2;
void *print_msg(void *);
pthread_creat(&t1,NULL,print_msg,(void*)"HELLO");
pthread_creat(&t2,NULL,print_msg,(void*)"world\n");//创建成功后开始执行的函数
pthread_join(t1,NULL);
pthread_join(t2,NULL);
}
void *print_msg(void *m)
{
char *cp=(char*)m;
int i;
for(i=0;i<NUM;i++)
{