`
ah_fu
  • 浏览: 227960 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

简单介绍windows平台下的pthread线程库

阅读更多

最近打算尝试写一些跨平台的程序,本想自己封装windows下的CreateThread和linux下的pthread,后来查查资料,发现Linux社区早就提供了

windows下的pthread库,和linux下一模一样,爽。

windows下的pthread库叫做:pthreads-win32,官方网站是:http://sourceware.org/pthreads-win32/,官方FTP是:

ftp://sources.redhat.com/pub/pthreads-win32/

郁闷的是,FTP里面的内容比较乱,部分已经编译的库有问题。我下载了一个看起来比较新的库,结果弄了半天不能链接。建议大家下载:

ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-7-0-release.exe这个自解压文件,压缩包里的pthreads.2目录是源码,

Pre-built.2目录是编译所需的头文件和库文件。

先把pthreads-w32-2-7-0-release.exe解压缩到c:\pthreads-w32-2-7-0-release文件夹。
OK!现在写一个简单的pthread来测试:

//main.cpp
#include <stdio.h>
#include 
<pthread.h>
#include 
<assert.h>

void* Function_t(void* Param)
...{
    printf(
"我是线程! ");
    pthread_t myid 
= pthread_self();
    printf(
"线程ID=%d ", myid);
    
return NULL;
}


int main()
...{
    pthread_t pid;
    pthread_attr_t attr;
    pthread_attr_init(
&attr);
    pthread_attr_setscope(
&attr, PTHREAD_SCOPE_PROCESS);
    pthread_attr_setdetachstate(
&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(
&pid, &attr, Function_t, NULL);
    printf(
"======================================== ");
    getchar();
    pthread_attr_destroy(
&attr);
    
return 1;
}



OK!使用微软的CL来编译:
rem cl.bat
cl.exe main.cpp /c /I"c:\pthreads-w32-2-7-0-release\Pre-built.2\include"
link.exe /out:main_cl.exe main.obj /LIBPATH:"c:\pthreads-w32-2-7-0-release\Pre-built.2\lib" pthreadVC2.lib
pause

或者使用GCC来编译:
rem gcc.bat
g++.exe -o main.o -c main.cpp -I"c:\pthreads-w32-2-7-0-release\Pre-built.2\include"
g++.exe -o main_gcc.exe main.o "c:\pthreads-w32-2-7-0-release\Pre-built.2\lib\libpthreadGC2.a"
pause

嘿嘿!开源就是好啊,跨平台实现得如此容易。 

分享到:
评论

相关推荐

    Windows下使用Dev-C++开发基于pthread.h的多线程程序实例

    pthread.h是POSIX线程库中的一个头文件,它提供了创建和管理线程的API。多线程编程允许程序同时执行多个部分,提高程序执行效率和响应速度,特别是在处理多核CPU和多任务操作系统上。 首先,为了在Windows平台使用...

    pthreads_pthread_

    《Windows环境下C语言实现POSIX线程库pthreads》 在跨平台的软件开发中,线程库扮演着至关重要的角色。POSIX线程库(pthreads)是为遵循POSIX标准的操作系统设计的一种线程接口,它允许开发者在多种操作系统上编写...

    pthread.h的配置包

    Pthreads 提供了一套标准的接口,使得跨平台的多线程编程变得更为简单。在 Windows 下使用 Pthreads,可以帮助你在 Unix/Linux 和 Windows 上使用相同的代码来管理线程,提高了代码的可移植性。然而,需要注意的是,...

    在C++中使用openmp进行多线程编程

    11开始支持的std::thread,也可以使用操作系统相关的线程API,如在Linux上,可以使用pthread库。除此之外,还可以使用omp来使用多线程。它的好处是跨平台,使用简单。 在Linux平台上,如果需要使用omp,只需在编译时...

    C语言多线程编程教程 POSIX线程库

    C语言支持多线程编程主要通过两种方式:POSIX线程库(通常称为_pthreads_)和Windows线程API。在POSIX兼容的系统(如Linux和macOS)中,pthreads库提供了创建和管理线程的API。而在Windows系统中,开发者则可以使用...

    C++对windows/linux线程的简单封装

    总的来说,"C++对windows/linux线程的简单封装"涉及到了如何使用C++标准库的`std::thread`结合Windows API(如`CreateThread`)和Linux API(如`pthread_create`)实现跨平台的线程管理。这需要对操作系统内核的线程...

    最简单的C++ 线程封装

    总结来说,这个“最简单的C++线程封装”示例展示了如何通过面向对象的方式创建跨平台的线程类,提供了一致的接口供用户实现线程逻辑,并处理了不同操作系统的线程创建、同步和管理细节。这对于开发跨平台的C++应用...

    Pre-built.2.zip

    在Windows环境下进行C语言的多线程编程时,我们常常会遇到一个问题,那就是Visual Studio (VS) 自带的多线程库并不能直接支持POSIX线程(pthread),这就需要我们引入第三方库,如"Pre-built.2.zip"提供的pthread库...

    开源的win32平台c++多线程开发包

    POSIX线程库是跨平台的多线程API,尽管Windows不是POSIX兼容的,但通过这样的移植库,开发者可以在Windows上使用与Unix/Linux相似的线程接口。 - **pthreads**:这是一个头文件,包含了pthread库的函数声明,供C++...

    POSIX规范多线程代码示例

    在这个名为"POSIX规范多线程代码示例"的压缩包中,你将找到六个使用C++的POSIX线程库(pthread)编写的示例,它们逐步展示了如何在Linux和Windows环境下(使用Visual Studio,需添加-lpthread链接选项)创建和管理多...

    CRFPP编译需要的pthread.lib等文件

    `pthread.lib`是一个线程库,用于支持多线程编程,是许多C/C++库在Windows系统中运行所必需的。在64位系统上,编译32位Python的扩展模块时,可能会遇到依赖库不匹配的问题,此时需要找到对应的32位版本库,例如`...

    pthread和win32的临界区 Critical Section 比较

    而在POSIX线程库pthread中,临界区则通过`pthread_mutex_lock`和`pthread_mutex_unlock`来实现。 在Win32 API中,临界区的创建和管理非常简单,可以使用`InitializeCriticalSection`初始化一个临界区对象,然后在...

    LINUX下多线程编程

    Linux系统下的多线程编程遵循POSIX标准,使用pthread库进行实现。编写多线程程序时需要包含`&lt;pthread.h&gt;`头文件,并链接`libpthread.a`库。 下面是一个简单的多线程程序示例,用于演示如何在Linux环境下创建和管理...

    78-教学课件-线程概念1

    Java线程API则依赖于宿主操作系统的线程库,如在Windows上使用Win32,在UNIX和Linux上使用Pthread。 为了演示线程的使用,课程可能会通过Pthread和Win32库创建一个简单的多线程程序,该程序在一个独立的线程中计算...

    AVRecord.7z

    本项目"AVRecord.7z"显然关注的是利用C++编程语言在Windows平台上进行声卡音频数据的采集,同时结合了pthread线程库来实现多线程处理。以下是对这些关键知识点的详细说明: **C++编程** C++是一种静态类型的、编译...

    windows和linux读写锁C++实现

    在Linux环境中,我们可以使用POSIX线程库(pthread)提供的`pthread_rwlock_t`类型来创建读写锁。下面是一个Linux下的C++实现: ```cpp #include &lt;pthread.h&gt; class RWLock { private: pthread_rwlock_t lock; ...

    pthread.lib crfpp.lib crfpp.h

    pthread.lib是POSIX线程库(Portable Operating System Interface for UNIX, POSIX Threads)的Windows版本。在多线程编程中,POSIX线程库允许开发者创建和管理多个并行执行的线程。在CRF++的编译或链接过程中,...

    Linux下的多线程编程.pdf

    编写多线程程序需要包含头文件pthread.h,并在编译时链接库libpthread.a。Linux中的pthread实现基于特有的系统调用clone(),该调用类似于fork(),但它允许指定子进程的资源继承方式,提供更细致的控制。 6. 简单的...

    pthreads-w32-2-8-0-release

    在Windows操作系统中,多线程编程通常依赖于特定的库来实现,其中`pthread`(Posix Threads)是广泛应用的一种跨平台的线程API,它最初为Unix系统设计,但通过`pthreads-w32`库,开发者可以在Windows上使用这一强大...

Global site tag (gtag.js) - Google Analytics