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 对象,目前还没有什么特别好的方案。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注