
linux c 编程问题 这个程序怎么运行不出结果呢。。。
#include<stdio.h>#include<semaphore.h>#include<pthread.h>#defineMAXSTACK100intstack[M...
#include <stdio.h>
#include <semaphore.h>
#include <pthread.h>
#define MAXSTACK 100
int stack[MAXSTACK][2];
int size=0;
sem_t sem;
void ReadData1(void){
FILE *fp=fopen("1.dat","r");
while(!feof(fp)){
fscanf(fp,"%d%d",&stack[size][0],&stack[size][1]);
++size;
sem_post(&sem);
}
fclose(fp);
}
void ReadData2(void){
FILE *fp=fopen("2.dat","r");
while(!feof(fp)){
fscanf(fp,"%d%d",&stack[size][0],&stack[size][1]);
++size;
sem_post(&sem);
}
fclose(fp);
}
void HandleData1(void){
while(1){
sem_wait(&sem);
--size;
printf("Plus:%d+%d=%dn",stack[size][0],stack[size][1],stack[size][0]+stack[size][1]);
}
}
void HandleData2(void){
while(1){
sem_wait(&sem);
--size;
printf("Multiply:%d*%d=%dn",stack[size][0],stack[size][1],stack[size][0]*stack[size][1]);
}
}
int main(void){
pthread_t t1,t2,t3,t4;
sem_init(&sem,0,0);
pthread_create(&t1,NULL,(void *)HandleData1,NULL);
pthread_create(&t2,NULL,(void *)HandleData2,NULL);
pthread_create(&t3,NULL,(void *)HandleData1,NULL);
pthread_create(&t4,NULL,(void *)HandleData2,NULL);
pthread_join(t1,NULL);
}
1.dat里面是1 2 3 4 5 6 7 8 9 10
2.dat里面是-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 展开
#include <semaphore.h>
#include <pthread.h>
#define MAXSTACK 100
int stack[MAXSTACK][2];
int size=0;
sem_t sem;
void ReadData1(void){
FILE *fp=fopen("1.dat","r");
while(!feof(fp)){
fscanf(fp,"%d%d",&stack[size][0],&stack[size][1]);
++size;
sem_post(&sem);
}
fclose(fp);
}
void ReadData2(void){
FILE *fp=fopen("2.dat","r");
while(!feof(fp)){
fscanf(fp,"%d%d",&stack[size][0],&stack[size][1]);
++size;
sem_post(&sem);
}
fclose(fp);
}
void HandleData1(void){
while(1){
sem_wait(&sem);
--size;
printf("Plus:%d+%d=%dn",stack[size][0],stack[size][1],stack[size][0]+stack[size][1]);
}
}
void HandleData2(void){
while(1){
sem_wait(&sem);
--size;
printf("Multiply:%d*%d=%dn",stack[size][0],stack[size][1],stack[size][0]*stack[size][1]);
}
}
int main(void){
pthread_t t1,t2,t3,t4;
sem_init(&sem,0,0);
pthread_create(&t1,NULL,(void *)HandleData1,NULL);
pthread_create(&t2,NULL,(void *)HandleData2,NULL);
pthread_create(&t3,NULL,(void *)HandleData1,NULL);
pthread_create(&t4,NULL,(void *)HandleData2,NULL);
pthread_join(t1,NULL);
}
1.dat里面是1 2 3 4 5 6 7 8 9 10
2.dat里面是-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 展开
1个回答
展开全部
pthread_create(&t1,NULL,(void *)HandleData1,NULL);
pthread_create(&t2,NULL,(void *)HandleData2,NULL);
前两个应该是
pthread_create(&t1,NULL,(void *)ReadData1,NULL);
pthread_create(&t2,NULL,(void *)ReadData2,NULL);
吧
pthread_create(&t2,NULL,(void *)HandleData2,NULL);
前两个应该是
pthread_create(&t1,NULL,(void *)ReadData1,NULL);
pthread_create(&t2,NULL,(void *)ReadData2,NULL);
吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询