概述
因为pthread并非Linux系统的默认库,而是POSIX线程库。在Ubuntu中使用 sudo apt-get install manpages-posix-dev 指令安装。在Linux中将其作为一个库来使用,因此加上 -lpthread(或-pthread)以显式链接该库。函数在执行错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。
正文
函数
函数原型
int pthread_create(pthread_t thread, const pthread_attr_t *attr,void (start_routine) (void ), void *arg);
参数
第一个参数:指向线程标示符pthread_t的指针;
第二个参数:设置线程的属性
第三个参数:线程运行函数的起始地址
第四个参数:运行函数的参数
返回值
当创建线程成功时,函数返回0,若不为0则说明创建线程失败
测试代码
void *func1(void *arg)
{
while(1)
{
printf("func1 working...\r\n");
sleep(1);
}
}
void *func2(void *arg)
{
while(1)
{
printf("func2 working...\r\n");
sleep(1);
}
}
int main(void)
{
int ret = -1;
pthread_t Mypthread_t1 = -1;
pthread_t Mypthread_t2 = -1;
ret = pthread_create(&Mypthread_t1,NULL,func1,NULL);
if(ret != 0)
{
printf("pthread_create error\r\n");
return -1;
}
ret = pthread_create(&Mypthread_t2,NULL,func2,NULL);
if(ret != 0)
{
printf("pthread_create error\r\n");
return -1;
}
while(1)
{
printf("runing ...\r\n");
sleep(1);
}
return 0;
}
/**********运行结果************
runing ...
func1 working...
func2 working...
//...一直循环
*******************************/