当前位置:编程学习 > 网站相关 >>

关于pthread里面一些函数的使用心得!

 第一次使用pthread,遇到的问题还真不少,现在我一一记录一下:
 
   1.关于编译时出现 对‘pthread_create’未定义的引用 之类的错误的解决:由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译中要加-lpthread参数:
    gcc -o pthread -lpthread pthread.c
 
  特别的,如果这样还没解决的话:
 
  按照上面编译了一下,还是一样的提示.
 
  后面man gcc
  才知道Usage: gcc [options] file...
  因此需要将库链接放在末尾。
  xs@vm:~/Desktop$ gcc -o pthread pthread.c -lpthread
 
   2.关于pthread里的一些函数.
 
   pthread_join函数:
 
   函数pthread_join用来等待一个线程的结束。
   函数定义: int pthread_join(pthread_t thread, void **retval);
   描述 :
   pthread_join()函数,以阻塞的方式等待thread指定的线程结束。当函数返回时,被等待线程的资源被收回。如果进程已经结束,那么该函数会立即返回。并且thread指定的线程必须是joinable的。
 
   参数 :
   thread: 线程标识符,即线程ID,标识唯一线程。
   retval: 用户定义的指针,用来存储被等待线程的返回值。
   返回值 : 0代表成功。 失败,返回的则是错误号。
 
   看下面一段程序:
 
#include <pthread.h>  
#include <unistd.h>  
#include <stdio.h>  
void *thread(void *str)  
{  
    int i;  
    for (i = 0; i < 10; ++i)  
    {  
        sleep(2);  
        printf( "This in the thread : %d\n" , i );  
    }  
    return NULL;  
}  
  
int main()  
{  
    pthread_t pth;  
    int i;  
    int ret = pthread_create(&pth, NULL, thread, (void *)(i));  
      
    pthread_join(pth, NULL);  
    for (i = 0; i < 10; ++i)  
    {  
        sleep(1);  
        printf( "This in the main : %d\n" , i );  
    }  
      
    return 0;  
}  

 

 
 
补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,