标签: pthreads-win32

pthreads-win32在各种Windows编译器上的可移植性

我正在使用pthreads-win32来允许对windows进行线程支持.

我有一个使用pthreads的跨平台项目,我想让它在各种编译器和不同操作系统版本的Windows上工作.

至少,根据文档,pthreads-win32应该与MSVC一起工作,甚至提供MSVC构建.

但我不知道该库是否使用最新的MSVC编译器(如MSVC-2008)进行测试,以及是否支持64位窗口.

根据您自己的经验,您是否了解此库存在的任何问题?

  • MSVC8,MSVC9,MSVC10有什么问题吗?
  • Windows x86_64有什么问题吗?
  • Windows Vista/Windows 7有任何问题吗?

笔记:

  • 甚至不尝试推荐使用Boost.Thread,我对此并不感兴趣.而且我对Boost.Thread库很熟悉
  • 我对使用Win32 API(缺少RW-Locks,条件变量等)重新发明Wheel感兴趣.
  • 我确实设法使用MSVC-2008和MinGW GCC-4.3编译项目,然后使用当前预编译的pthreads DLL轻松地对其进行单元测试.

我只需要了解pthreads-win32的局限性.

windows pthreads visual-c++ pthreads-win32

11
推荐指数
1
解决办法
5450
查看次数

PHP的pthreads没有在Apache中执行并行线程

我正在使用PHP 的pthreads扩展.当我从执行PHP脚本cmd在Windows上,我得到的并行线程,但是当我调用同一个脚本的Apache,我得到不同的结果,似乎对我来说,单个线程执行.

是否有任何配置我应该让Apache获得响应cmd(并行)?

class AsyncOperation extends Thread {
    public function __construct($arg){
        $this->arg = $arg;
    }

    public function run(){
        if($this->arg){
            for($i = 0; $i < 50; $i++) {
                echo "Yoo " . $this->arg . "<br>\n";
            }
        }
    }
}
$thread = new AsyncOperation("World ----------");
$thread2 = new AsyncOperation("Second -------------------------");
$thread->start();
$thread2->start();

for($i = 0; $i < 100; $i++) {
    echo "Standard <br>\n";
}

$thread->join();
$thread2->join();
Run Code Online (Sandbox Code Playgroud)

示例代码给出响应,cmd如:

Yoo World ----------<br>
Yoo World ----------<br>
Yoo …
Run Code Online (Sandbox Code Playgroud)

php pthreads pthreads-win32

7
推荐指数
1
解决办法
2655
查看次数

pthreads 与 MinGW 静态链接

我想将“pthreads for Win32”与我的应用程序静态链接,用 MinGW32 编译,这样应用程序就不需要 pthreadGC2.dll 来运行。

我正在使用最新版本的 pthreads - 2.9.1,从这里下载,lib 和包含文件被复制到 MinGW lib 和包含目录。

在网上搜索如何做到这一点时,我偶然发现了这个线程该线程指示使用 -static-libgcc -static-libstdc++ 标志。这不起作用,这意味着应用程序可以编译,但在没有 pthreadGC2.dll 的情况下无法运行。

他们还建议使用 -static -static-libgcc -static-libstdc++。这不会编译并出现以下错误:

main.o:main.cpp:(.text+0x461): undefined reference to  `_imp__pthread_create'
main.o:main.cpp:(.text+0x4be): undefined reference to `_imp__pthread_join'
Run Code Online (Sandbox Code Playgroud)

有谁知道怎么做?

顺便说一句 - 将 pthreadGC2.dll 从 2.9.1 版本(在 pthreads-w32-2.9.1-1-mingw32-dl​​l.tar.lzma 内)下载到应用程序的文件夹是不够的。要运行该应用程序,我还应该复制另一个 dll:libgcc_s_dw2-1.dll。这对我来说真的很糟糕 - 我不想让我的用户每次想要运行我的应用程序时都拥有这 2 个 DLL

这是我的代码:

#include <stdio.h>
#include <pthread.h>

static void* threadMain(void* param)
{
    printf("thread start\n");
    for (int i = 0; i < 2; i++)
        Sleep(1);
    printf("thread …
Run Code Online (Sandbox Code Playgroud)

windows dll mingw32 static-linking pthreads-win32

4
推荐指数
1
解决办法
3548
查看次数

PHP 中 pthread 的问题

我在 PHP 中遇到 pthreads 问题。

当我启动 apache 时,我看到这样的错误:

php.exe - Entry point not found
The procedure entry point was not found _zend_hash_update@@12 in library D:\xampp\php\ext\php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

当我在 CMD 中执行脚本时,出现警告:

PHP Warning:  PHP Startup: Unable to load dynamic library 'php_pthreads.dll' (tried: D:\xampp\php\ext\php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

我将 pthreadVC2.dll 复制到:

C:/windows/system32
D:/xampp/php
D:/xampp/apache/bin
Run Code Online (Sandbox Code Playgroud)

我将最后一个文件 php_pthreads.dll 复制到:

D:/xampp/ext
Run Code Online (Sandbox Code Playgroud)

我添加到 php.ini 行:

extension=php_pthreads.dll
Run Code Online (Sandbox Code Playgroud)

我的配置:

我在 php …

php pthreads pthreads-win32 php-7.2 php-7.3

4
推荐指数
1
解决办法
3898
查看次数

我无法在窗口平台中使用pthread

我的env是Windows8.1(64位)并使用Visual Studio 2010.

我确实将所有*.dll文件放在system32,SYSWOW64中(因为我使用win8 64bit.)

并使用VC 2010链接x64-system的*.lib文件的位置.

当然,我添加了额外的文件夹lib forders ..,包括文件夹..等..

但是当我尝试编译"pthread-used"项目时,会发生致命错误.

-资源

#include<pthread.h>
#include<stdio.h>
int doit_id,trd_id;
pthread_t trd;
void *doit(void *data){
    doit_id = (int)data;
    return 0;
}
int main(){
    trd_id=pthread_create(&trd,NULL,doit,0);
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

-错误

1.obj : error LNK2019: unresolved external symbol __imp__pthread_create (referenced in function _main)
C:\Users\~program Location~ : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

请帮我

c pthreads pthreads-win32

2
推荐指数
1
解决办法
5348
查看次数