当前位置:  技术问答>linux和unix

(菜鸟飞飞)问个多线程的程序的问题

    来源: 互联网  发布时间:2016-09-05

    本文导语:  #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  void reader_function ( void ); void writer_function ( void ); char buffer; int buffer_has_item=0; pthread_mutex_t mutex; struct timespec delay; main (){ pthread_t reader; ...


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
void reader_function ( void );
void writer_function ( void );

char buffer;
int buffer_has_item=0;
pthread_mutex_t mutex;
struct timespec delay;
main (){
pthread_t reader;
/* 定义延迟时间*/
delay.tv_sec = 2;
delay.tv_nsec = 0;
/* 用默认属性初始化一个互斥锁对象*/
pthread_mutex_init(&mutex,NULL);
pthread_create(&reader,pthread_attr_default,(void *)&reader_function),NULL);
writer_function();
}

void writer_function (void){
while(1){
/* 锁定互斥锁*/
pthread_mutex_lock (&mutex);
if (buffer_has_item==0){
buffer=make_new_item( );
buffer_has_item=1;
}
/* 打开互斥锁*/
pthread_mutex_unlock(&mutex);
pthread_delay_np(&delay);
}
}

void reader_function(void){
while(1){
pthread_mutex_lock(&mutex);
if(buffer_has_item==1){
consume_item(buffer);
buffer_has_item=0;
}
pthread_mutex_unlock(&mutex);
pthread_delay_np(&delay);
}
}



报错为:[root@localhost C]# gcc -g reader.c -o reader -lpthread
reader.c: In function ‘main’:
reader.c:25: 错误:‘pthread_attr_default’ 未声明 (在此函数内第一次使用)
reader.c:25: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
reader.c:25: 错误:所在的函数内只报告一次。)
reader.c:25: 错误:提供给函数 ‘pthread_create’ 的实参太少
reader.c:25: 错误:expected ‘;’ before ‘)’ token
reader.c:25: 错误:expected statement before ‘)’ token

谢谢回答!!

|
pthread_attr_default没有定义,用NULL代替即可。
man pthread_create 里面提到的:
If attr is NULL, the default attributes shall be used.

通过编译之后,多半还会有链接问题:
test.c:(.text+0x6a): undefined reference to `make_new_item'
test.c:(.text+0x93): undefined reference to `pthread_delay_np'
test.c:(.text+0xc2): undefined reference to `consume_item'
据说pthread_delay_np是solaris的,linux没有实现。另外两个可能要自己写。
http://bbs.chinaunix.net/archiver/?tid-584593.html
http://linux.chinaunix.net/bbs/archiver/?tid-282797.html

|

有时候一个简单的错误很难发现却是致命的...

|
语法错误可以用一个优秀的编辑器来帮你检测

    
 
 

您可能感兴趣的文章:

  • 菜鸟问个多线程编程的问题,请各位大大赐教!
  • (菜鸟基础问题)关于内核线程
  • 菜鸟问题:怎样用g++编译多线程程序?
  • 有关Linux下开发程序--上万个线程问题。菜鸟问(来者有分,谢谢大家)
  • 菜鸟一问:请问怎么启动线程?高手请指教
  • 菜鸟的多线程简单问题~~~
  • (菜鸟飞飞)问个关于线程互斥的问题
  • Linux多线程菜鸟问题
  • 菜鸟Linux 线程问题
  • 关于多线程的菜鸟问题?在线等待,急!
  • 【linux菜鸟第一帖】:请问多线程开发,为何不能设置多个线程的优先级问题?
  • 菜鸟求助多线程并发服务器
  • 菜鸟求救:多线程 多socket
  • 菜鸟求助:Linux 应用程序后台启动后关闭窗口程序退出
  • 菜鸟的问题:求助,关于red hat linux 引导程序
  • 菜鸟请教,应用程序如何判断驱动程序已经挂载成功
  • 菜鸟问:怎么把java程序作成.exe文件??谢谢
  • 菜鸟求助:如何让自己编的小程序,开机自动运行?
  • 菜鸟问题--如何在Linux下安装程序!
  • 关于LINUX下卸载程序的菜鸟问题
  • 菜鸟问题:为什么我的程序编译之后看不到运行结果?
  • 菜鸟问题:如何使一个通过shell窗口启动的程序在该窗口关闭后还能一直运行?
  • 菜鸟请问(Red Hat Linux)里面的用于开发窗口程序的头文件是什么,谢谢
  • 菜鸟级问题--我的程序编译不了
  • 菜鸟问题4:java怎样调用外部程序?
  • 菜鸟问题:Java可以用来开发驱动程序吗,或者说通讯、接口?或者说是否合适?
  • 菜鸟问题:这个程序编译不能通过。
  • 菜鸟问题——其他语言怎样使用Java编写的程序(明确地说,使Class)
  • 我这段菜鸟极的程序错在哪里了?
  • 菜鸟级问题:HelloWorld程序运行出错???
  • 菜鸟的疑问 linux下编译c程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 菜鸟问一个关于j2ee的菜鸟问题
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • 菜鸟求问菜鸟问题 ,域名绑定
  • ===菜鸟系列===:写过毕业论文的前辈请进!!!菜鸟散分啦!!!!
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3