易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Linux下对信号量测试的一个简单例子
Linux下对信号量测试的一个简单例子:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#define MAXSTACK 100
int
stack[MAXSTACK][2];
int
size = 0;
sem_t sem;
void
ReadData1(
void
)
{
FILE
*fp = fopen("1.dat","r");
if
(fp == NULL)
{
printf("Open file error ");
return
;
}
while
(!feof(fp))
{
fscanf(fp,"%d %d",&stack[size][0],&stack[size][1]);
sem_post(&sem);
++size;
}
if
(fp != NULL)
fclose(fp);
}
void
ReadData2(
void
)
{
FILE
*fp = fopen("2.dat","r");
if
(fp == NULL)
{
printf("Open file ERROR ");
return
;
}
while
(!feof(fp))
{
fscanf(fp,"%d %d",&stack[size][0],&stack[size][1]);
sem_post(&sem);
++size;
}
if
(fp != NULL)
fclose(fp);
}
void
HandleData1(
void
)
{
while
(1)
{
sem_wait(&sem);
printf("Plus:%d+%d=%d ",stack[size][0],stack[size][1],stack[size][0]+stack[size][1]);
--size;
}
}
void
HandleData2(
void
)
{
while
(1)
{
sem_wait(&sem);
printf("Multiply:%d*%d=%d ",stack[size][0],stack[size][1],stack[size][0]*stack[size][1]);
--size;
}
}
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
*)ReadData1,NULL);
pthread_create(&t4,NULL,(
void
*)ReadData2,NULL);
pthread_join(t1,NULL);
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图