pthread创建线程及遇到问题解决
来源:互联网 发布:程序员工资 编辑:程序博客网 时间:2024/06/03 04:10
出现的错误:invalid conversion from `void*' to `void*(*)(void*)
原来是定义的void reader_function();
pthread_create(&reader,NULL,(void*)&reader_function,NULL);
这样的代码用gcc编译不出问题,用gcc编译有问题。为了两者都没有问题,所以就改为了 void * reader_function();
这样改过之后,又出现了新的问题:invalid conversion from `void*(*)()' to `void*(*)(void*)'
这时又需要改变reader_function函数,给这个函数加上参数变为:void * reader_function(void*);
执行makefile时出现下面错误
undefined reference to `pthread_create'
要增加 -lpthread
gcc pthreadTest.cpp -o pthreadTest -lpthread
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>void* reader_function(void*args);void writer_function();pthread_mutex_t mutex;int main(void) { puts("Hello World!!!"); pthread_t reader; pthread_mutex_init(&mutex,NULL); pthread_create(&reader,NULL,reader_function,NULL);// sleep(1); writer_function(); return EXIT_SUCCESS;}void writer_function(){ sleep(1); int i=0; while(1){ printf("this is writer :%d\n",i); i++; }}void* reader_function(void * agrs){ sleep(1); int i=0; while(1){ printf("this is reader reader reader :%d\n",i); i++; } int *a = 0; return a;}
使用互斥锁pthread_mutex_t,实现同一进程中,某些资源的同步。
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>void* reader_function(void*args);void writer_function();pthread_mutex_t mutex;int tickets = 1000;int main(void) { puts("Hello World!!!"); pthread_t reader; pthread_mutex_init(&mutex,NULL); pthread_create(&reader,NULL,reader_function,NULL);// sleep(1); writer_function(); return EXIT_SUCCESS;}void writer_function(){ while(1){ pthread_mutex_lock(&mutex); if(tickets>0){ printf("this is writer :%d\n",tickets--); }else{ break; } pthread_mutex_unlock(&mutex); }}void* reader_function(void * agrs){ while(1){ pthread_mutex_lock(&mutex); if(tickets>0){ printf("this is reader to sell tickets :%d\n",tickets--); }else{ break; } pthread_mutex_unlock(&mutex); } int *a = 0; return a;}
- pthread创建线程及遇到问题解决
- pthread(1) 创建线程
- pthread创建RR线程
- 线程创建pthread
- pthread 基础篇 创建线程
- pthread线程创建过程(未完)
- pthread:用户态创建线程
- pthread库学习(1): 线程的创建
- pthread创建的线程中的陷阱
- linux下使用pthread库函数创建线程
- pthread线程的终止退出 | 线程的大量创建
- 初识pthread(一)-线程管理之创建/结束线程
- pthread线程的终止退出 | 线程的大量创建
- pthread线程的终止退出 | 线程的大量创建
- pthread线程
- pthread线程
- pthread线程
- 线程pthread
- 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线
- Sybase数据库下载地址
- 外企面试官们爱提的十个问题(转)-----大家看看你
- Excel.Application使用手册
- 二叉树
- pthread创建线程及遇到问题解决
- M文件的调试方法
- 非常有用的CSS模板
- tuning+asterisk+server
- Bloom Filter概念和原理
- 角点检测算子(Harris, KLT, SIFT)
- [linux] 如何在vim里面把空格缩进改为tab缩进
- matlab算法耗时计算
- Xcode GDB 调试