posix, pthread, 可移植性中间件

个人觉得,一个可移植地媒体芯片中间件在现在是很有价值的。要解决这个问题,就必须面临数据流两头的问题,即跟操作系统借口相关的数据源,多线程和显示接口的问题。

数据源获取到不必太担心,基本上现在所有操作系统的SDK都支持标准输入输出流。显示也应该问题不大,主要是效率的问题,可以根据具体情况具体优化。

现在看来最麻烦的就是多线程了。线程是由操作系统支持的,每个系统的提供的接口都不一样,而在中间件中,几乎每个模块都是一个线程,线程的可移植性直接关系到整个系统的可移植性。这样好像最好的办法就是对线程模块进行封装,然后针对不同的系统做不同的实现——这的确不是件很容易的事情。首先的对多线程编程非常熟练,其次就得研究各个操作系统的SDK了——的确让人头痛。

这时候我看到了pthread, 它是posix的一部分。什么是posix呢?维基百科上如是解释:

POSIXIEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISOIEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由Richard Stallman应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统界面)的缩写,而X则表明其对Unix API的传承。

Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。

微软Windows NT至少部分实现了POSIX兼容。

pthread就是posix的线程部分了,它定义了定义了创建和操纵线程的一套API。

作为最小unix集合的posix,看来unix家族的操作系统应该都支持pthread了,据说symbian在v9.1中也增加了对posix的支持,名字为P.I.P.S

Windows据说曾经实现了部分posix,但后来由于bug多多而放弃了,后来有推出了windows services for unix,据说是posix的超集。

在sf上已经有了pthread win32的项目,可以用于win32。

我现在的问题是:

1) windows services for unix 可以支持Windows mobile 系列系统么?

2) 如果1)行不通,pthread win32移植到windows mobile 么?好像有个叫mobile7z的开发包,包含了pthread的wm版本,不知道是否能用?

3) 目前的嵌入式平台,出了linux,wm, symbian之外还有些什么?这些系统是不是不能支持pthread (or posix)?

希望有高手能解答我的疑惑。

posted @ 2009-03-19 18:04  老猴的技术博客  阅读(954)  评论(1编辑  收藏  举报