天嵌 ARM开发社区

 找回密码
 注册
查看: 1308|回复: 7

FIFO如何判断对方已读?

[复制链接]
福大牛二爷 发表于 2012-12-28 17:05:29 | 显示全部楼层 |阅读模式
本帖最后由 福大牛二爷 于 2012-12-28 17:08 编辑

A程序再循环,B程序也在循环;现在A和B之间有有某种关系:
一开始A先运行起来,然后B在运行起来,现在A和B都在死循环中;
A循环一次,生成一个文件x,并通知B这个信息(生成了文件x),而且等待B的回复;
B收到A的这个信息后读取文件x,读取后并发送信息给A(文件读取完毕),而且等待A的下一次信息;
A收到B的信息(文件读取完毕)后,接着下一次循环···········
如此循环下去·········
现在我有两种方法:
1.是创建两个管道p1和p2(不知道行不行),在A中创建好文件,立即向p1写入信息,然后等待p2信息;B收到p1信息,读取文件,读取完毕,向p2写入信息,接着等待P1的信息;A收到p2信息开始下一次循环···
2.创建一个管道P1,A向p1写入信息后,判断p1是否被读取?(这个不知道行不行);B读取管道信息,开始工作,并在开始第二次循环的时候判断p1管道的内容是否写入。(根据了解管道信息被读取后就会为空了)现在不知道如如何再A中判断p1内容是否被B读取了?
求大家给个建议,1和2那个方法比较可行?(我的知识比较薄弱,希望大家指点下,好有个方向继续研究下去!
米+油 发表于 2012-12-29 00:10:26 | 显示全部楼层
你这样说估计没有人能理解你想说什么
TQ-lkp 发表于 2012-12-29 08:53:26 | 显示全部楼层
本帖最后由 TQ-lkp 于 2012-12-29 08:54 编辑

使用有名管道,A程序发送给B,B再回复给A就行了
wwwicq 发表于 2012-12-29 09:00:26 | 显示全部楼层
用2个锁不就行了,比如2个信号量semaphore m1,m2分别用于a和b.
1 初始 m1=1,m2=0 a运行b锁住.
2 a执行后m2.post, m1.wait a锁b运行.
3 然后b执行后m1.post, m2.wait b锁a运行.
...重复2-3到结束条件发生.
 楼主| 福大牛二爷 发表于 2012-12-29 09:51:40 | 显示全部楼层
嗯 好的感谢楼上的!
 楼主| 福大牛二爷 发表于 2012-12-29 09:59:53 | 显示全部楼层
本帖最后由 福大牛二爷 于 2012-12-29 11:36 编辑

解决了



 楼主| 福大牛二爷 发表于 2012-12-29 10:14:40 | 显示全部楼层
本帖最后由 福大牛二爷 于 2012-12-29 11:35 编辑


································
 楼主| 福大牛二爷 发表于 2012-12-29 11:01:12 | 显示全部楼层
本帖最后由 福大牛二爷 于 2012-12-29 11:35 编辑

                             飞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-22 16:24 , Processed in 1.031250 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表