草庐IT

【JavaEE】进程和线程

全部标签

windows - 在 64 位 Windows 应用程序中获取 TID(线程信息 block )的最快方法?

我有一个计算密集型模块,我在其中添加了堆栈跟踪以便能够找到特定问题。尽管启用此堆栈跟踪时允许应用程序运行得更慢,但它不能运行慢10倍。这就是为什么我不使用DBGHELP.DLL中的StackWalk例程,而是使用帧指针自己遍历堆栈(因此我不使用FramePointerOmission编译器选项)。在大多数情况下,获取调用堆栈工作正常并且非常快,但在某些情况下,我的逻辑会失败,因为其中一个帧指针指向堆栈外的地址(不多,只是一点点)。我知道这可能是某个地方的错误,但为了能够使我的代码更安全,我需要一种方法来检查帧指针是否指向当前线程堆栈中的内存位置。该应用程序为64位,可在Windows下

c++ - 有效地杀死一个windows进程

我正在编写一个C++QT桌面应用程序,旨在在Windows操作系统上运行。此应用程序应枚举所有正在运行的进程,并将终止特定进程(通过名称识别)。我知道有两种方法可以做到这一点:使用WindowsAPI。使用tasklist命令获取进程,使用taskkill结束进程。在代码风格、效率和性能方面哪个选项更好?还是有第三种选择? 最佳答案 效率和性能不应该让你担心,IMO。您可能不会每秒杀死1000个进程,所以如果一个进程花费10毫秒而另一个进程花费100毫秒,我怀疑没有人会关心。因此,选择其中一个的主要理由是易于编程和维护。用于枚举进程

windows - Windows 上的安全命名共享内存,因此只有特定进程可以打开

有没有办法在Windows中使用命名共享内存设置权限,以便由进程而不是用户完成访问控制?我想让一个程序创建内存,传递句柄或传回PID,以便客户端进程可以访问内存。应拒绝所有其他进程访问。谢谢 最佳答案 访问控制仅由安全主体进行,安全主体可以是用户、组、计算机等。如果你有一个你想与另一个进程共享的对象,你可以使用DuplicateHandle. 关于windows-Windows上的安全命名共享内存,因此只有特定进程可以打开,我们在StackOverflow上找到一个类似的问题:

c# - 我可以限制进程的 RAM 使用吗?

是否可以人为限制.NET进程可以使用的内存量?我希望模拟低内存情况以进行测试。现在我们使用虚拟机来处理这类事情。它有效,但我很想知道我们是否可以找到更方便的方法。可以轻松实现自动化的理想选择。编辑:正如HansPassant指出的那样,仅限制进程可用的虚拟内存量不会取代基于VM的测试。测试是为了性能,所以我需要交换而不是OutOfMemoryException。 最佳答案 Onethatcouldeasilybeautomatedwouldbeideal.您可以使用WindowsJobObjects从代码中管理它。流程可以与工作相关

带参数的 C++ 简单线程(无 .net)

我已经在互联网上搜索了一段时间并找到了不同的解决方案,但后来都没有真正起作用或者对我的使用来说太复杂了。直到2年前我才使用C++,所以它可能有点生疏:D我目前正在编写一个将数据发布到URL的程序。它只发布数据。为了发布数据,我使用curl,但它会阻塞主线程,并且当第一个帖子仍在运行时,第二个帖子应该开始。最后大概有5-6个post操作同时运行。现在我想将带有curl的帖子推送到另一个线程中。每个帖子一个线程。线程应该得到一个字符串参数,其中包含要推送的内容。我目前被困在这个问题上。尝试了Windows的WINAPI,但在读取参数时崩溃了。(在我的示例中,第二个线程仍在运行,而主线程结束

windows - 如果线程在临界区内死亡,会发生什么?

场景是这样的。我们有很多线程访问受临界区保护的一段代码,这确保一次只有一个线程可以访问该部分。现在的问题是,如果一个线程死在临界区内会发生什么?应用程序会挂起吗?或者有什么方法可以释放锁? 最佳答案 来自MSDN:Ifathreadterminateswhileithasownershipofacriticalsection,thestateofthecriticalsectionisundefined.来源:http://msdn.microsoft.com/en-us/library/windows/desktop/ms6826

windows - 捕获 Windows 终端关闭正在运行的进程

在命令提示符窗口中,我有一个正在运行的进程。当进程仍在执行时,我单击命令提示符窗口一角的(红色)“X”。命令提示符窗口关闭,正在运行的进程终止。在Linux上,关闭正在运行的进程的父终端将向该进程发送SIGHUP。我如何在Windows上捕获此事件? 最佳答案 SIGHUP的等价物是通过您在SetConsoleCtrlHandler注册的回调提供的.您的回调函数将在dwCtrlType=CTRL_CLOSE_EVENT的任意线程池线程上调用。您有5秒的时间进行清理,您无法取消关闭。示例代码可在thisMSDNarticle中找到

python - 关闭 PyQt 对话框终止父进程? (PyQt4/Pyside) 示例代码

我正在处理的QSystemTrayIcon应用程序有问题。我使用SystemTrayIcon作为父项或祖父项创建的任何对话框在关闭时都会终止整个应用程序,即使我覆盖了“拒绝”方法也是如此。这是一个没有图标的简化示例。运行它时(这里是Windows7),任务栏上应该有一个空白托盘图标应用程序。如果您左键单击它,将弹出一个空对话框。单击“X”关闭对话框也将完全终止python进程。fromPySideimportQtGui,QtCoreclassRestartDialog(QtGui.QDialog):def__init__(self,parent):super(RestartDialog

c++ - 查找可能是由于线程锁定(可能)引起的性能问题

我花了一些时间运行valgrind/callgrind来分析一个使用许多线程进行大量TCP/IP通信的服务器。在提高性能一段时间后,我意识到在这个特定的测试场景中,进程不受CPU限制,所以我看到的性能“改进”没有用。理论上CPU应该很忙。我知道它连接的TCP/IP设备不是限制,因为服务器在两台机器上运行。一个是PC,另一个是带有Arm处理器的嵌入式设备。即使是嵌入式设备也只有大约2%的CPU使用率,但它执行的事务要少得多——大约十分之一。尽管我们试图尽快获取数据,但两个系统最多只能获取大约2%。我的猜测是某个互斥锁被锁定并占用了一个线程。这是一个纯粹的猜测!系统中有几个线程具有公共(p

c - 终止进程时是否可以删除文件?

我需要编写一个创建文件的WindowsC应用程序,并且在应用程序终止时需要删除该文件(无论是在正常终止还是强制终止的情况下)。另一个要求是用户还应该能够以只读模式打开此文件(可能使用记事本)。基本上这将在Java中读取(即DocumentBuilder::parse)我写了下面的代码HANDLEhFile=CreateFile("d:\\test.xml",GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_FLAG_DELETE_ON_CLOSE,NULL);当我在Notepad.exe中打开文件(即test.xml)时,我收到