免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2345 | 回复: 3
打印 上一主题 下一主题

Linux应用程序中2个进程如何同步? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 10:13 |只看该作者 |倒序浏览
Linux应用程序中2个进程如何同步?

平台:ARM9-s3c2410
系统:嵌入式linux2.4.18


在应用程序中我创建了2个进程:

一,uard_read
    线程中通过调用驱动,循环读取uart的数据(驱动中通过DMA读取数据, 速度很快)
    然后将数据不断放到一个环形缓冲区(N个buf)。


二,data_break
    用来解析环形缓冲区每个buf里的数据。
    data_break中解析1个buf的数据的时间比uard_read中存放完1个buf数据要短很多。


希望实现:
    我希望在uard_read中,读取数据存放完1个buf后,
    就类似中断一个通知data_break继续执行来解析这个buf里面的数据包。
    处理完后,就睡眠了。而不是循环去查询状态。


请问在linux下如何来实现上面的功能呢?

    软中断能够实现吗,软中断时,软中断能够多块地响应呢?
    data_break的功能就放到软中断的回调函数里面去做了。


    还有别的更好的方法吗? 类似驱动开发中的通过信号量同步一样?

感谢高手指点...

论坛徽章:
0
2 [报告]
发表于 2008-08-19 10:17 |只看该作者
进程信号可以啊。如果是线程的话条件变量也可以啊。
信号不就相当于应用程序中的软中断嘛

[ 本帖最后由 qps104 于 2008-8-19 10:19 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-08-19 13:25 |只看该作者

难道嵌入式linux里面就没的这些东西吗

论坛徽章:
0
4 [报告]
发表于 2008-08-19 15:27 |只看该作者
是不是嵌入式没关系,区别只在于硬件arm或i386
2.4的内核对这些基本的进程间通信还是支持的
用信号或者semphore加上共享内存就可以了满足你的要求了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP