您的位置:首页 > 其它

pthread创建线程及遇到问题解决

2011-10-11 11:35 260 查看
出现的错误:invalid conversion from `void*' to `void*(*)(void*)

原来是定义的void reader_function();

pthread_create(&reader,NULL,(void*)&reader_function,NULL);

这样的代码用gcc编译不出问题,用gcc编译有问题。为了两者都没有问题,所以就改为了 void * reader_function();

这样改过之后,又出现了新的问题:[b]invalid conversion from `[b][b]void*(*)()[/b]' to `void*(*)(void*)'[/b][/b]

这时又需要改变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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐