草庐IT

QT多线程

全部标签

c# - 沙盒 AppDomain 中的线程安全

我有一个应用程序域来托管不受信任的代码/程序集。我用安全属性解决了所有安全问题,而且效果很好。不受信任的代码在专用线程上运行。CLR是2.0。这就是我的AppDomainShellAppDomainSeed,Shell在主域中运行,seed是不受信任域中的受信任代理/助手。我有兴趣限制创建新线程和更改优先级。目前,我不受信任的程序集可以设置ThreadPriority.Highest或通过创建10k线程来终止操作系统。有SecurityPermissionFlag.ControlThread但这只会阻止像Abort()这样的高级操作。我正在查看Thread类实现,对于那些简单的操作,它

windows - 更改线程 session ID

如何在不同的session中启动线程?我需要从非交互式session(session0)中的服务启动交互式session(session1)中的线程。我之前通过使用SetTokenInFormation和DuplicateTokenEx然后将其传递给CreateProcessAsUser来完成此过程。我希望我可以做同样的事情,除了使用SetThreadToken而不是CreateProcessAsUser。 最佳答案 线程不属于session,进程属于。您需要在另一个session中创建一个进程来托管您想要的线程。

c++ - 线程模拟的多级使用

我在使用一些很久以前编写的执行线程级模拟和进程生成的类时遇到了一些问题。问题似乎是我对这些实用程序类的使用超出了其他任何人尝试使用它们的范围。第一个通过使用OpenThreadToken和DuplicateToken以及ImpersonateLoggedOnUser进行线程级模拟。第二次尝试使用CreateProcessAsUser和通过OpenThreadToken/DuplicateToken获得的token创建进程。我遇到的问题是:Thread1runninginIISwiththecorrectuserThread2thatiscreatedbyThread1-whichisi

c++ - 子窗口中的多线程 OpenGL

我正在尝试构建一个即使在调整主窗口大小或移动时也能响应的OpenGL应用程序。我发现的最合乎逻辑的解决方案是在呈现OpenGL的单独线程中创建一个子窗口和一个消息泵。它可以根据需要在帧之间调整自身大小。主要消息泵和窗口框架在主进程中运行。它在某种程度上非常有效。可以移动窗口、使用菜单和调整大小,而不会影响子窗口的帧速率。SwapBuffers()是一切分崩离析的地方。SwapBuffers()以这种方式运行时,似乎是在软件模式下运行。它不再保持在60FPS以匹配我的显示器的VSync,当窗口约为100x100时它会跳到数百,而当最大化到1920x1080时它会下降到20FPS。在单线程

c++ - 在 python 线程中调用 TBB 'parallel_for'

我有一个用于公开函数的python自定义c++模块,其中一些函数使用TBB(tbb21_015oss)来加速处理。到目前为止,在Win32环境中从Python(2.6.2)调用TBB加速函数时我没有遇到任何问题。但是现在,我在从Python线程(通过使用threading.Thread类创建)调用此类函数时遇到问题-在调用相同函数时,从主Python线程工作正常。调用该函数导致应用程序崩溃,并显示以下消息:First-chanceexceptionat0x03522e96inpython.exe:0xC0000005:Accessviolationreadinglocation0x00

windows - Hello World 没有输出 - Qt SDK 2010 - Mingw (gcc 4.6.3) - WindowsXP

Qt:qt-sdk-win-opensource-2010.01Mingw:1686-mingw32-gcc-4.6.3-release:.pro文件:TEMPLATE=appTARGET=SOURCES+=ef.cppDEPENDPATH+=.INCLUDEPATH+=..cpp:#includeintmain(intargc,char*argv[]){printf("\nhjhjk\n");}编译和可执行输出如下:名为temp的可执行文件和名为ef.o的目标文件在debug文件夹中创建。我已经按照描述编辑了qmake.conf文件here.打印语句没有被打印出来。请帮忙。

windows - windows线程溢出时如何查看当前栈大小

我有一个进程在从IIS进程中运行时会溢出堆栈,但在单独运行时工作正常。我怀疑它自己获得默认的1MB堆栈,但在IIS中获得的堆栈少一些。为了避免干扰IIS工作进程,我在IIS进程中使用一个子线程来分配更大的堆栈,但我怀疑根据文档(http://msdn.microsoft.com/en-us/library/ms149581.aspx),线程创建的堆栈大小参数被忽略了当堆栈溢出时,我可以在调试器中查看暂停的进程,但我如何才能知道实际分配了多大的堆栈? 最佳答案 答案如下。在调试器中,在伪寄存器TIB(http://msdn.micro

c - 中断正在线程中执行的函数调用

我有一个DLL,其中包含一个线程函数,其伪代码如下所示:volatileBOOLstopped=FALSE;voidStopEverything(){/*Entercriticalsection*/stopped=TRUE;/*Leavecriticalsection*/}voidworkerThreadFunc(){Initialize();/*Checkpoint1*/if(stopped){/*Docleanup*/return;}doLaboriousTask1();/*Checkpoint2*/if(stopped){/*Docleanup*/return;}doLabori

windows - Windows 线程何时需要消息循环,为什么?

我什么时候需要在Windows应用程序中使用消息循环?例如,对于Windows服务,我是否需要为我创建的每个线程或仅为主服务进程创建一个消息循环?while(true){GetMessage(&messageHandle,0,0,0);DispatchMessage(&messageHandle);} 最佳答案 每个nativeWindows程序都至少包含一个消息循环(通常称为“消息泵”),就像您举的例子一样。这是为了能够处理由程序本身、其他应用程序或操作系统发起的Windows事件。Windows事件的示例可以用于计时器、套接字通

windows - 未找到 Qt 创建者 : This application has failed to start because MSVCP110. dll

鉴于我为我的“WindowsVista”下载了“Qt64bitversion”,安装后,“QtCreator2.7.0”显示它基于“Qt5.0.2(32bit)”。但是,在创建新项目或打开现有项目时,会出现以下消息:此应用程序未能启动,因为未找到MSVCP110.dll。请注意,消息框本身的标题为“uic.exe-无法定位组件”。但是当我点击“确定”按钮时,它会创建项目(或打开它)。为什么会这样? 最佳答案 安装MSVC2012dll应该有所帮助:http://www.microsoft.com/en-us/download/det