问题标签 [pthreads-win32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3968 浏览

pthreads-win32 - 安装 pthread win32

我尝试根据本指南安装 pthread win32 。

我将pthreadVC2.dll文件添加到C:\Windows并将pthreadVC2.lib文件添加到C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib. 我在链接器中输入pthreadVC2.lib了其他依赖项,但我无法在我的项目中包含 pthreads.h 文件。Visual Studio 无法识别此文件。有什么问题?

我想得到一些帮助。

0 投票
1 回答
249 浏览

c++ - pthread_mutex 不等待超时

我有以下代码:

然后我尝试像这样测试它:

结果是它打印“LOCKED: true \n DONE: false”并且ETIMEDOUT是错误。如果它不能锁定它,它应该阻塞 6600 毫秒。

任何想法我做错了什么?我只是在重新发明轮子而不是使用 C++11 std::mutex,因为我需要为 IPC 同步/事件共享这个 Mutex(类似于 WinAPI 的CreateEvent)。

0 投票
1 回答
367 浏览

configure - 使用 Autotools 构建 Log4cpp:找不到 pthreads

社区,

我从http://log4cpp.sourceforge.net/下载了 Log4cpp 源代码包,但在构建这个库时遇到了问题。为此,我打开了我的 cygwin-bash.exe,导航到源包的根目录并输入 ./configure。我得到了很多输出,但它以

配置:错误:无法找到 pthread,目前这是必需的

现在,我已经从https://www.sourceware.org/pthreads-win32/下载了 POSIX pthreads,并将所有 dll 粘贴到 MinGW 的 bin-Folder 中,所有头文件都粘贴到 MingGW 的 include-Folder 中的所有 .lib 到 lib - MinGW的文件夹,但它仍然不起作用。

谁能帮我?我会很感激帮助。

0 投票
1 回答
444 浏览

c - 在 pthread_cond_wait 中取消线程会导致 MinGW 下的访问冲突

我的程序在 Windows(Windows 7 - 32 位)中因访问冲突而死。是MinGW下用gcc 4.8.1编译的C代码。它使用 pthreads-w32 2.9.1。有几个线程同时工作,没有其他明显问题。它可以运行好几天,也可以在几个小时内失败。代码也可以在几种 linux 架构中编译,但我在那里没有问题。在调试器下运行程序也非常困难。

以下是发生崩溃的函数。

这些是清理功能:

我一直在使用 Dr.MinGW 0.7.3 运行它,这是报告:

Dr.MinGW 在通过 timeout_lector 中的第 214 行的堆栈跟踪中报告。它对应于代码中的 pthread_cond_wait 行。

该线程是连续创建的,并且是多个并行创建的。他们等待一段时间,而他们可以被取消,如果时间过去了,他们会改变一个变量,然后等到他们被取消,这几乎立即由另一个线程发生。没有太多可取消的函数可以用于等待,并且可以在不同的系统中移植,所以我选择了 pthread_cond_timedwait 。但问题似乎在于第二次无限期的等待。

我搜索了类似的问题,但似乎没有什么是相同的问题。更相似的是:
pthread_cond_wait:随机分段错误
取消 pthread_cond_wait() 挂起与 PRIO_INHERIT 互斥锁

如果有人可以帮助我,我将不胜感激。

0 投票
2 回答
1464 浏览

makefile - CppuTest:最终链接期间对 pthread 的未定义引用

我是 cppuTest 的新手,实际上我正在尝试在 CppuTest 根目录中构建 ./examples 。源文件和测试文件的编译没有问题,但我停留在最后的链接阶段,我得到了这个错误:

我在 Windows 7 上使用 MinGW。MinGW 还包含 pthread.a 库。我的makefil如下所示:

如您所见,pthread 库被提供给带有 LDFLAGS 的链接器......

有人有类似经历吗?或者也许知道问题出在哪里?将感谢任何提示!

0 投票
1 回答
1034 浏览

visual-studio - pthread 静态链接与 Visual Studio 2013 中的应用程序

我想将 pthread lib 与我的应用程序静态链接,以便在没有安装 pthread lib 的其他目标上运行我的 .exe。

为此,我在 Linker->input->additional dependency of Visual Studio 中添加了 pthreadVC.lib,并为 lib 提供了正确的路径。

#define PTW32_STATIC_LIB我之前也在我的 thread.h 文件中添加了这段代码#include <pthread.h>

我的应用程序构建成功并在同一台机器上运行。但我试图在其他目标上运行时出现错误pthreadVC.dll is missing

请告诉我我在哪里失踪。

0 投票
1 回答
3083 浏览

c++ - 是否必须在 Visual Studio 2013 中同时使用 pthreadVC2.lib 和 pthreadVC2.dll?

我下载了 pthread-w32-2-9-1-release.zip,解压缩并在 VisualStudio2013 中使用 Prebuild/include lib 和 dll。

我用 main.c 建立了一个 VC++ 空项目“helloc”,然后用 pthread_create pthread_join 函数编写了一个简单的例子。

这是我的配置:

Properties->C/C++->General->Additional Include Directories,添加“F:\pthread_win32\include”

属性->链接器->常规->附加库目录,添加“F:\pthread_win32\lib\x86”

Properties->Linker->Input->Additional Dependencies,添加“pthreadVC2.lib”

它已经成功构建,但是当我单击“本地 Windows 调试器”时,控制台会出现“helloc.exe 错误,因为找不到 pthreadVC2.dll”。

然后我将 pthreadVC2.dll 复制到 helloc/Debug/,与 helloc.exe 相同的目录,终于可以正常工作了。

但我不知道为什么 helloc.exe 都需要 pthreadVC2.lib 和 pthreadVC2.dll。在 VisualStudio 中必须同时使用 lib 和 dll 吗?

如果其中只有一个(pthreadVC2.lib pthreadVC2.dll)足以支持 helloc.exe,我如何指定要在 VisualStudio 中使用 helloc.exe 的哪一个(dll 或 lib)?

而且我不想将所有 pthread 库和 dll 放入“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC”,我想知道如何手动配置。

0 投票
1 回答
389 浏览

c - 在窗口 x64 构建的示例在 pthread_cancel 和 pthread_join 处崩溃

我已经创建了正在使用pthreadVC.lib哪个Win32版本的小程序。我正在使用视觉工作室 2013。

当我更改了x64od 相同程序的程序设置,然后我链接了 pthreadVC2.lib(用于 x64 配置),然后我的程序pthread_join也崩溃了,而不是加入我使用pthread_cancel但有同样的问题。此外,我自己为 x64 构建了 pthread 并链接了该库,但仍然遇到同样的问题。

我的测试代码

在 x64 配置上出现的错误是

Pthread64_bit.exe 中 0x0000000180002C70 (pthread_dll.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0x000000000000001A。

编辑: 我还从C 中的 pthreads 复制了示例——一个最小的工作示例 并尝试运行但在pthread_join.

那么你能告诉我是否有任何其他设置需要做x64或我错过了什么?

0 投票
1 回答
246 浏览

mingw - 在 Windows 上构建 libpthreads-stubs-0.3 时出错

我正在尝试在具有 MinGW 和 MSys 环境的 Windows 机器上编译 libpthreads-stubs-0.3(用于 vaapi)。我已经在 MinGW 中安装了 mingw32-pthreads-w32 开发包(版本 2.9.1-1)。

现在,当我尝试编译 libpthreads-stubs-0.3(只有一个文件被调用stubs.c)时,我得到一个类型冲突的错误:

现在,当我#include <pthread.h>在文件顶部评论并将其放入其中时ifndef(因为如果我不这样做,我会得到一个错误:error: unknown type name 'pthread_t'这很明显)我得到与上面相同的错误:

编辑: Stubs.c 文件代码

0 投票
1 回答
3852 浏览

windows - 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++。这不会编译并出现以下错误:

有谁知道该怎么做?

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

这是我的代码:

和我的makefile: