linux c 线程编程,linux c 多线程编程

本文介绍了如何在Linux环境下使用C语言进行多线程编程,涉及`pthread_create`和`pthread_join`函数的使用,以及编译时遇到的问题与解决方案,包括链接libpthread库和修复花括号不匹配的错误。
摘要由CSDN通过智能技术生成

linux 下 c 语言多线程:

/*06.3.6

Mhello1.c

Hello,world -- Multile Thread*/#include#include

#define NUM 6

void print_msg(void*m)

{char *cp=(char*)m;inti;for(i=0;i

{

printf("%s",m);

fflush(stdout);

sleep(1);

}

}intmain()

{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!\n");

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

00a1ddc3e3b1e77ac3d1e00affd57b31.png(*)(void *).

原因:pthread_create 语法错误,

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

bf128967e0a19c9e1274167b887c69c7.png

ee1ebf6ea244c86a6425e2f42c3c7cf6.png

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值