Pthreads-Win32的使用和一些问题

Pthreads-win32使用

    Pthreads-win32是一个Windows下使用的开源POSIX线程库,当前最新版本为2.9.1(2012-5-7)。POSIX1003.1-2001标准定义了编写多线程应用程序的应用程序编程接口(API)。该接口通常称为pthreads。在许多现代操作系统中都已经包括线程库,例如:Solaris(UI) threads、Win32 threads、DEC threads、DCE threads或pthreads标准的起草版本。许多这些系统有慢慢采用pthreads API的趋势,这样应用程序开发者将会减少移植问题。
    Win32没有pthreads,也不想提供支持本地pthreads库,本项目希望提供一个免费、可用和高质量的解决这个问题的方法,项目网址为http://sources.redhat.com/pthreads-win32/。
    你可以从下面几个镜像网址获得pthreads-win32库:
   源代码树和预编译的.DLL,.LIB和必要的头文件包含在Zip压缩文件中,名称为pthread-win32-v-v-v-release.zip。位于:ftp://sourceware.org/pub/pthreads-win32。
   1)(v-v-v是版本号,例如:1-4-0,release是一个描述术语,例如:beta1,rc1等)。
   2) 仅DLL,LIB,头文件和管理员文档可用,位于:ftp://sourceware.org/pub/pthreads-win32。
   3) 以不压缩的形式提供的源代码,位于:ftp://sourceware.org/pub/pthreads-win32/sources。

Pthreads FAQ(问与答)

Q 1  什么是pthreads-win32?

    Pthreads-win32是一个微软Win32环境下符合POSIX1003.1c 1995标准的线程组件的开源软件实现。 POSIX 1003.1b的一些功能也支持,包括信号量。其它相关的函数包括一组读写锁函数。这个库叶支持一些开放组单Unix说明书(V2)中规定的功能,称为Muxtex类型。
参见文件“ANNOUNCE”获得更多的信息,包括标准的一致性详情和支持函数的列表。

Q 2   有那几个版本的dll可以使用?

    简单的,你只能使用它们中的一个,但是不需要仔细的选择。
    你做的最重要的选择:是否使用的版本在内部使用异常机制(有些版本库使用异常作为线程取消或者清除实现的一部分,其它的使用setjmp/longjmp替代)。
    问题是:线程取消的时候,C++应用程序造成对象的析构和C++异常处理,在线程退出的时候会调用栈释放。
    这看起来更好的选择是使用标准C版本的库(非EH)应用于C++应用程序。因为这视乎假设通用线程实现。然而,如果你使用EH版本的pthreads-win32,那么你必须说明你的应用程序是可移植的。事实上与其他pthreads库链接行为上非常的不一样。
   现在,你可能会问:为什么库中还包含EH版本呢?
   下面有几点原因可以解释:
   - 专家的建议,这些代码可能将来需要;
   - pthreads-win32是一种实现方式,可能是唯一免费使用的,它有EH版本,它可能对于那些希望在那种情况下研究应用程序性能的人是有用的。

Q 3  库的命名约定是什么?

    因为库使用各种异常处理机制和编译器编译的,也因为如果混合在应用程序中,库不能独立的工作,不同版本的库有它自己的名称。
    通常情况下::
        pthread[VG]{SE,CE,C}.dll
        pthread[VG]{SE,CE,C}.lib
    其中:
        [VG] 表示编译器
        V      - MS VC
        G      - GNU C
        {SE,CE,C}表示异常处理机制
        SE     - Structured EH
        CE     - C++ EH
        C      - no exceptions - uses setjmp/longjmp
    例如:
        pthreadVSE.dll  (MSVC/SEH)
        pthreadGCE.dll  (GNUC/C++ EH)
        pthreadGC.dll   (GNUC/not dependent on exceptions)
    GNU库的存档文件的命名也变为:
        libpthreadGCE.a
        libpthreadGC.a

教程网址

https://computing.llnl.gov/tutorials/pthreads/
http://randu.org/tutorials/threads/

你可能感兴趣的:(多线程,Solaris,dll,编译器,pthreads,程序开发)