草庐IT

pthread_yield

全部标签

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时,我得到了

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就像什么都没有发生并且不需要清理?似乎

c# - 使用嵌套方法时奇怪的执行顺序,yield return 和组合使用

这个问题在这里已经有了答案:yieldreturnstatementinsideausing(){}blockDisposesbeforeexecuting(2个答案)关闭8年前。我无法理解为什么Program.Fetch1和Program.Fetch2不会产生完全相同的执行顺序。唯一的区别是Program.Fetch1正在调用Program.Fetch来执行实际的提取操作。classProgram{staticIEnumerableFetch1(){using(Contextc=newContext()){returnFetch(c);}}staticIEnumerableFetch

c# - yield return执行后的代码

考虑以下示例:classYieldTest{staticvoidMain(string[]args){varres=Create(newstring[]{"112123","1234","12345"});}staticIEnumerableCreate(IEnumerablestrings){foreach(stringsinstrings){yieldreturns.Length;if(s.Contains('')){string[]tokens=s.Split('');foreach(stringtintokens){yieldreturnt.Length;}}}}}调用Crea

c# - Coroutine中的 "yield return 0"和 "yield return null"有什么区别?

我是新手,对“yield”有点困惑。但最后我明白了它是如何使用WaitForSeconds工作的但我看不出“yieldreturn0”和“yieldreturnnull”之间的区别。他们都在等待下一帧执行吗?抱歉我的英语不好。非常感谢。 最佳答案 yieldreturn0和yieldreturnnull都为单个帧生成。最大的区别是yieldreturn0分配内存是因为0在后台发生的装箱和拆箱,但是yieldreturnnull确实不分配内存。因此,如果您关心性能,强烈建议使用yieldreturnnull。