• linux c 多线程编程


    linux 下 c 语言多线程:

    /* 06.3.6
    Mhello1.c
    Hello,world -- Multile Thread
    */
    #include<stdio.h>
    #include<pthread.h>
    #define NUM 6
    
    void print_msg(void* m)
    {
    char *cp=(char*)m;
    int i;
    for(i=0;i<NUM;i++)
    {
    printf("%s",m);
    fflush(stdout);
    sleep(1);
    }
    }
    
    int main()
    {
    void print_msg(void*);
    pthread_t t1,t2;
    pthread_create(&t1,NULL,(void *) print_msg,(void *)"hello,");
    pthread_create(&t2,NULL,(void *)print_msg,(void *)"world!
    ");
    pthread_join(t1,NULL);
    pthread_join(t2,NULL); 
    }

    编译时出错:以下为详细内容:

    undefined reference to ‘pthread_create’
    
    
    undefined reference to ‘pthread_join’

    1) 在编译多线程程序时,于线程的函数都会有此错误,导致无法编译通过;(undefind reference to ‘pthread_join’)

    问题的原因:pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败。

    解决:在gcc编译的时候,附加要加 -lpthread参数即可解决。

    gcc  -lpthread mhello.c -o mhello.exe

    2) collect2: ld 返回 1

    原因:在函数中,花括号不匹配。

    解决:匹配花括号。

    3)警告:传递 pthread_create 的第三个参数时不兼容的指针类型间转换,/usr/include/pthread.h:225:附注:需要类型 void * (*)(void *),但实参 类型为 void 星星(*)(void *).

    原因:pthread_create 语法错误,

    根据提示查看相关文档,在第227行是第3个参数,

    image

    image

    .

  • 相关阅读:
    「学习记录」《数值分析》第三章计算实习题(Python语言)
    Set原理
    字符串流stringReader
    Collection List接口
    io
    Dubbo 服务容错Hystrix
    Duboo 与springboot整合
    读取配置文件
    springboot 端口号
    springboot 多环境选择
  • 原文地址:https://www.cnblogs.com/outline/p/4126766.html
Copyright © 2020-2023  润新知