Symbian 的缺陷(三)

本文探讨了在Symbian平台上实现类似Windows平台OutputDebugString功能的方法,并讨论了多种同步对象如RProperty和RCondVar的应用场景及其局限性。

篇首注:此文乃约一年前写就,其中可能有不正确的认识。现在借 优快云 处新瓶装旧酒,供还在学习和使用 Symbian 的人员参考。

今天想写一个 Symbian 上的类似于 OutputDebugString 那样的函数,可以在另外的进程中接收其输出。像这样的有可能在多线程中使用的函数,毫无悬念地需要迫使你去和系统提供的同步对象打交道。

对于进程间的通知,我一直在感觉上倾向于使用 RProperty,因为它可以同时通知到所有对该属性感兴趣的进程。当然,也可以考虑 RCondVar,它也具备通知到所有等待于其上的进程的能力,但是它必须要与一个 RMutex 同时使用,不是很方便。(顺便说一下,其实一直也没太弄明白 conditional variable 的最佳使用场景,今天稍微有可点头绪,可以参看此文中的例子:http://learn.akae.cn/media/ch35s03.html)

查看 RProperty 的 Subscribe 方法时才发现,这个方法竟然没有超时设定,再去看 RMutex 等的 Wait,也一样。也就是说,我们最常用的 RMutex 对象,一旦 Wait 上去,那就只有死等,真不是一般的恐怖。不过 RSemaphore 是有的,RCondVar 也有。

一直在考虑如何使用其他同步对象实现类似于 Windows 平台的 Event 对象,目前还没有什么特别好的方案。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值