草庐IT

thread_members

全部标签

windows - 如何在 Windows 中获得线程句柄的访问权限 THREAD_QUERY_INFORMATION

我想使用GetExitCodeThread()。MSDN文档说,“句柄必须具有THREAD_QUERY_INFORMATION或THREAD_QUERY_LIMITED_INFORMATION访问权限。”我使用_beginthreadex()创建我的线程。当我调用这个API时,我应该如何设置THREAD_QUERY_INFORMATION标志?它应该是initFlag的一部分吗?文档没有说明必须如何准确设置此标志。 最佳答案 _beginthreadex返回的句柄已经足够访问线程以查询有限的信息。毕竟它有终止线程的权限,这远不止查询

c++ - #include<线程>,错误无法打开源文件 "thread"

我期待在Windows上用C++实现多线程,我找到了链接http://www.cplusplus.com/reference/thread/thread/作为对线程的解释,在给定的示例中他们提到了线程的标题命名,实际上我正在Microsoftvisualstudio2010中编写代码,它说错误无法打开源文件“thread”,请帮助我这是否有帮助,或者请向我推荐任何其他有帮助的网站,实际上我是高级C++的初学者,在此先感谢。 最佳答案 是C++11header,VisualStudio2010不实现C++11。尝试更新到VisualS

windows - 重叠 I/O : How to wake a thread on a completion port event or a normal event?

我想使用线程池来启动/取消重叠读取操作——分别使用ReadFile()和CancelIo()——以及处理任何读取操作完成时的完成端口事件。任何线程都可以发起读操作任何线程都可以处理读取完成事件只有发起读取的线程可以取消它(这是一个CancelIo()限制)我不确定如何实现它。通常调用GetQueuedCompletionStatus()来等待完成端口事件,调用WaitForSingleObject()来等待正常事件,但不清楚如何混合使用这两者。如果PostQueuedCompletionStatus()让我指定一个特定的线程来唤醒我就会被设置。有什么想法吗?更新:该解决方案必须在Win

c++ - Visual Studio 2008,错误 c2039 : 'set_new_handler' : is not a member of 'std'

所以前几天我去编译我正在处理的VC++项目,突然间我几乎所有的文件都出现错误:new.h:errorC2039:'set_new_handler':isnotamemberof'stdnew.h:errorC2039:'set_new_handelr':symbolcannotbeusedinausing-declaration“new.h”和“set_new_handler”没有在我的任何文件中使用,所以我不知道这些错误是如何或为什么突然出现的,因为它们与windows/VS库文件有关。谁知道我可以做些什么来清除这个错误并重新编译我的代码?更新在检查编译时包含的文件后,有些文件包含,

windows - C/C++ : duplicate main() loop in many threads

我有这个“有趣”的问题。我有这个遗留代码,看起来像intmain(){while(true){doSomething();}}我想在许多线程中复制doSomething(),这样现在main()看起来像intmain(){runManyThreads(threadEntry)}voidthreadEntry(){while(true){doSomething();}}问题是doSomething()访问许多全局变量和静态变量,我无法更改它的代码。是否有复制这些静态变量的技巧,因此每个线程都有自己的集合?(某种线程本地存储,但不影响doSomething())..我使用VisualC++

c++ - 如何销毁由 std::thread 显式创建的线程?

我希望两个线程最初都在无限循环中运行,但过了一段时间我想杀死第一个线程而不等待它完成,第二个线程应该正常运行。我该如何实现?当我运行下面的代码时,出现调试错误!voidf1(inti){while(1){printf("ExecutngThread%d:%d\n",i,j);Sleep(10);}}intmain(){std::threadt1(f1,1);std::threadt2(f1,2);Sleep(100);t1.~thread();while(1){Sleep(10);}return0;} 最佳答案 程序按照设定的控制流

C++ Windows MFC 并发 : Get thread to wait until particular state achieved

在WindowsMFC并发上,我如何告诉我的当前线程等待直到达到特定状态?目前我能想到的唯一方法是执行周期性sleep并检查状态——当我们处于预期状态时,然后继续。有更好的方法吗?BOOLachieved=FALSE;intmain(intargc,char**argv){//Thisfunctioncreatesanewthreadandmodifiesthe'achieved'globalvariableatsomepointinthefuturedoSomethingOnAnotherThread();//Waitmaximum4secondsfor'achieved'tobeT

c++ - WINAPI 枚举WindowsProc : Non-Standard Syntax; use & to create a point to a member

我在调用EnumWindows(EnumWindowsProc,0)时不断收到错误消息;它将我的BOOLCALLBACKselectionWindows::EnumWindowsProc(HWNDhWnd,longlParam)函数转换为参数。我知道它与类和selectionWindows::有关,但我终究无法弄明白。这是.h#ifndefSELECTIONWINDOWS_H#defineSELECTIONWINDOWS_H#include#include"mainwindow.h"#include#includeclassselectionWindows:publicQWidget{

Windows 服务应用程序上的 Java5 - 获取 Full Thread Dump 需要说明

我在这里浏览了几篇文章,例如:javastackdumponwindowsThreaddumpprogrammatically/JDI(JavaDebuggerInterface)但没有得到确切的答案。问题:Windows上有一个作为服务运行的Java5应用程序(因此我们没有可以使用Ctrl+Break进行转储的控制台)。有时应用程序挂起,我们需要一个线程转储。我们试过“jstack”但它在我们的环境中不起作用(我们发现它只兼容Java6)。所以我们制作了一个C++应用程序,它通过附加到Java应用程序进程的.dll调用方法调用线程转储,因此它需要本地管理员权限,这不是很好。因此,我们

vb.net - CodeDom编译错误 'Forms' is not member of 'Windows' in Windows 8.1

我正在使用CodeDom创建InMemoryexe。这适用于Windows8及以下版本。如果我删除表单声明,编译后的代码在Windows8.1中工作,但我不想这样做。有任何想法吗?Windows7-一切正常,Windows8-一切正常,Windows8.1-无需声明表单即可工作。引用框架provOptions.Add("CompilerVersion","v4.0")CodeDom引用程序集:vbParams.ReferencedAssemblies.Add("mscorlib.dll")vbParams.ReferencedAssemblies.Add("System.dll")vb