jjzjj

pThreads

全部标签

c++ - pthread Windows 事件等效问题

我有以下代码可以复制Windows手动和自动重置事件。classevent{public:event(boolsignalled=false,boolar=true):_auto(ar),_signalled(signalled){pthread_mutex_init(&_mutex,NULL);pthread_cond_init(&_cond,NULL);}~event(){pthread_cond_destroy(&_cond);pthread_mutex_destroy(&_mutex);}voidset(){pthread_mutex_lock(&_mutex);//onlys

c++ - 使用 pthread_win32 增加进程优先级

环境:WinXP、VisualC++我正在使用pthread_win32库来在我的程序中实现线程,我想将我的进程(程序)优先级提高到HIGH_PRIORITY_CLASS。库中是否有允许这种操作的函数?否则,是否可以将SetPriorityClass函数与`pthread_win32一起使用,或者我必须使用win线程以确保某种兼容性? 最佳答案 你可以获得一个本地线程句柄来调用SetPriorityClass与pthread_getw32threadhandle_np. 关于c++-使用

windows - pthreads 与 MinGW 的静态链接

我想将“Win32的pthreads”与我的应用程序静态链接,使用MinGW32编译,这样应用程序就不需要pthreadGC2.dll来运行。我正在使用最新版本的pthreads-2.9.1,从here下载并将lib和包含文件复制到MinGWlib和包含目录。在网上搜索如何操作时,我偶然发现了thisthread它指示使用-static-libgcc-static-libstdc++标志。这不起作用,这意味着应用程序可以编译,但如果没有pthreadGC2.dll就无法运行。他们还推荐使用-static-static-libgcc-static-libstdc++。这不会编译并出现以下

c++ - 在 c++ 的 Windows 线程编程中,pthread_setcanceltype 的替代方案是什么?

在c++的windows线程编程中,pthread_setcanceltype的替代方案是什么? 最佳答案 Windows线程没有取消点,因此无需考虑系统取消类型。因此,在Windows上“取消”一个线程意味着您,开发人员,需要想出一个策略来告诉线程退出。如果它是GUI线程,您可以向其发送WM_QUIT消息。如果它是一个非GUI线程,那么它真的取决于线程在做什么。您需要分析线程并查看是否存在代码可以明确检查线程是否需要继续运行或退出的点。有一个pthreads-win32如果您宁愿避免该问题并在Win32上获得pthreads投诉行

windows - 使用 Windows 线程时,是否可以指定一个缓冲区用于线程的堆栈,类似于 pthread_attr_setstack()?

pthreads允许用户提供一block内存用于线程堆栈:size_tstack_size=1024*1024*4;void*stack=malloc(stack_size);pthread_attr_tattributes;pthread_attr_init(&attributes);pthread_attr_setstack(&attributes,stack,stack_size);pthread_tthread_id;pthread_create(&thread_id,&attributes,worker_function,NULLWindows线程是否提供类似的功能?Crea

c++ - 你如何为 x64 编译静态 pthread-win32 库?

看起来已经做了一些工作来制作pthread-win32使用x64,但没有构建说明。我曾尝试使用VisualStudiox64交叉工具命令提示进行简单构建,但是当我尝试从x64应用程序链接到lib时,它看不到任何函数导出。它似乎仍在将lib编译为x86或其他东西。我什至尝试过将/MACHINE添加到makefile的适当位置,但没有帮助。有人让这个工作吗? 最佳答案 您可以使用vcpkghere.这是C++的Windows包管理器。它支持pthread构建以及其他开源库。我想使用静态pthread库。当我下载pthread时,我得到了

windows - 如何找到线程本地存储的开始和结束?

在Windows和Linux下,如何在给定线程句柄的情况下确定其对应的静态线程本地存储block的开始和结束? 最佳答案 您可以在ThreadInformationBlock中找到此信息.但是请注意,这样做会访问未记录的结构,因此高度不可移植并且可能会在未来版本的Windows中中断。您似乎可以从TIB获取当前线程的线程本地存储区域;我不确定你会得到另一个线程的TLS。您可以尝试深入研究TIB中偏移量0x30处的进程环境block(PEB),但同样,您正在处理可能会发生变化的未记录结构。

php - 在 php 中使用 pthread 进行后台处理

我正在尝试使用pthread在php中实现多线程发送电子邮件。这里的基本思想是将电子邮件作为后台作业发送,这样用户就不必等待任务完成。我有一项服务,用户PHPMailer发送电子邮件及其工作正常。我正在使用以下代码进行多线程classThreadWorkerServiceextends\Thread{private$_runMethod;private$_vars;private$_autoloderPath;function__construct($vars){$this->_vars=$vars;$reflector=new\ReflectionClass('Composer\Au

c - 当 pthread 在等待互斥体时死亡会发生什么?

如果一个进程有三个线程,T1、T2和T3,并且所有三个线程都试图获取互斥锁M1上的锁,我理解一个将获取互斥锁,而另外两个将等待直到它们获取互斥锁。如果我使用pthread_mutexattr_setrobust()使线程健壮,那么我明白如果T1持有M1,并且T1在释放M1之前终止,T2将被EOWNERDEAD的返回值唤醒。然后T2可以清理protected资源的状态。现在,如果T1拥有M1而T2和T3正在等待M1,会发生什么情况。T2终止。发生什么了?当T1释放M1时,互斥体是否直接进入T3?T3是否获得了EOWNERDEAD,或者它只是看起来T3就像什么都没有发生并且不需要清理?似乎

php - 带有 FPM 的 PHP7 上的异步/线程

我发现pthreads在web环境下不工作。我在LinuxDebian上使用PHP7.1onFPM,我还使用Symfony3.2。我只想做,例如:用户发出请求并PUT一个文件(1GB)PHP服务器接收文件并处理它。立即返回true给用户(jsonResponse)而不等待处理上传的文件稍后,当处理文件完成(移动、复制、复制任何你想要的)时,只需添加一个事件或从后台进行回调并通知用户。现在。为此,我创建了ConsoleCommand。我从后台执行Process('bin/consolemy:command')->start();并进行处理。但这对我来说是用火箭筒杀死一只苍蝇。我必须将许多