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/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值