草庐IT

【JavaEE】进程和线程

全部标签

c# - 我如何知道分配给线程的实际时间片?

我知道实际时间片是可变的,具体取决于操作系统和处理器等多种因素。但是有没有一种方法可以让线程在它拥有CPU的时间内计算分配给它的时间片? 最佳答案 有趣的问题;但我认为:可能不是。为了从线程内部测量这个,线程需要知道两个事件:线程启动/恢复;获取CPU时间;并开始运行线程被“挂起”,并停止执行从那里开始:即使你找到了一种机制来告诉线程“你刚刚被恢复”——你怎么能告诉线程什么时候被挂起呢?换句话说:您需要两个钩子(Hook),它们不仅以某种方式通知线程“您已恢复”;还有关于“你很快就会被停职”;这样线程本身就可以进行簿记。鉴于您的评论

c++ - 以编程方式获取用于在非开发人员 Windows 环境中构建进程或库的 DLL 列表

我什至不确定这是否适用于Windows;我还没有看到一个人要求这么普遍的东西并找到解决方案。这可能是可能的,但可能没有用于处理它的API。我有一个自动化测试模块,我正在为Windows工作,它使用一个模块以通用方式处理检测到的EXE,除非它检测到二进制文件来自特定的测试框架。到目前为止,我只能通过查询帮助和处理响应/字符串解析来做到这一点。如果我触发某人在框架之外编写的长时间测试,该测试接受命令行参数寻求帮助,但实际上并不处理这些命令行参数而只是自动运行,这可能会导致问题。因此,有时我会卡在等待测试完成的时候,而不是进行闪电般的快速查询。这就是我试图通过这个花哨的新模块避免的。:)这个

windows - CryptGetProvParam 和多线程程序

CryptGetProvParam的MSDN文档说此函数不得在多线程程序的线程上使用。我希望有一些条件可以这样使用它。有没有人在这方面有任何经验并可以告诉我解决方法?谢谢。 最佳答案 一些MSDN文档是由实习生编写的,质量并不总是很好。他们显然在谈论与同时从多个线程调用此函数相关的问题,而不仅仅是进程中有多个线程。如果您查看一些查询值以及API的设计方式,应该很容易发现不能使用多线程的查询。任何使用CRYPT_FIRST/NEXT(PP_*ENUM*)的东西都必须依赖一些内部状态来记住“它在哪里”。这些查询在其描述中也有线程警告。这

具有不受信任完整性级别的 Windows 进程

我找不到很多关于Windows中不受信任的完整性级别的信息,对此有一些疑问:是否有不受信任的完整性级别进程可以创建命名对象的地方?(互斥锁、事件等)不受信任的完整性级别进程是否应该能够打开一个现有的命名对象,该对象在其创建时通过ACE和SYSTEM_MANDATORY_LABEL_NO_WRITE_UP被赋予安全描述符到MandatoryLevelUntrusted?当我尝试时,它失败并显示0xc0000022(访问被拒绝),而使用MandatoryLevelLow时效果很好。通常不受信任的完整性进程如何与其代理进程通信?(比如googlechrome标签如何与googlechrome

python - 来自 python 子进程的基本 cygwin 命令

我想从python运行cygwin并执行cygwin命令。我使用的是Windows,所以我想在cygwin而不是cmd中运行命令。我正在使用Python3.6.1。我只想知道如何运行基本命令,这样我就可以像ls一样从那里开始工作。我试过:subprocess.call("E:/cygwin/bin/bash.exe","ls")(类似这样的东西,但它不起作用)@pstatix建议的以下解决方案,它使用Popen()。在stdin.write(b'ls')之后运行stdin.close()导致/usr/bin/bash:line1:ls:commandnotfound错误我可以做到以下几

python - 获取进程启动的工作目录

Windows和Python。在当前工作目录更改后,是否可以获取启动进程(不受我控制)的工作目录?我怀疑Windows会不可挽回地丢失此信息,但正在寻求确认。 最佳答案 由eryksun指定:Pythonaddsthescriptdirectorytosys.path,nottheworkingdirectory.TheWindowsProcessParametersstoretheDosPathstringandHandlefortheworkingdirectory.Alltracesoftheinitialworkingdir

c++ - boost::进程间共享内存

我的环境是Windows2008/2012C++VS2013。我希望STL映射在热重启后持续存在。使用boost:interprocess是一种解决方案,其中重新启动的应用程序是服务器端对map进行更新,而另一个客户端应用程序将连接到同一个共享内存段,以使其在服务器应用程序崩溃时保持“事件状态”/出于任何原因重新启动? 最佳答案 是的,你可以做到这一点。您可以使用interprocess::shared_ptr来获取您建议的引用计数。请记住,映射内存并非神奇的事务性,因此如果出现硬故障,则可能会出现损坏。如果您需要稳健的状态持久性,

windows - 在 Docker for Windows 中,如何防止容器在守护进程启动时自动启动?

每次我的DockerforWindows守护进程启动时,它都会启动7个不同的容器。我可以通过dockerkill每个容器..我可以启动额外的容器,做其他事情等等,一切都很好......直到我重新启动。一旦我重新启动docker守护进程,它们就会再次出现,完全相同的7个容器。我可以去哪里清除它们成为自动重启的候选人? 最佳答案 也许这些容器有一个重启策略,这将使Docker在每次发现它们不存在时运行它们?您可以confirmitwithadockerinspect.如果您看到它们在运行,请在杀死它们之前尝试到dockerupdatet

windows - 进程完成时超时或关闭

我有一个X.exe程序,大约需要2-6小时才能完成。确切时间未知,但我想实现6.5或7小时的阈值。如果这个程序在这段时间内没有返回任何值,它就会被杀死。我如何使用批处理*.bat文件来实现它?这是我目前所拥有的:一个计时器bat1.bat和一个实际的bat2.bat。bat1.bat:startcmd/Cbat2.bat&timeout/t25200&taskkill/imX.exe/fbat2.bat:cdblahbat1.bat此方法的问题在于,只有在25200秒(或7小时)后,计时器才会停止,并且不会在该限制之前终止。我如何告诉计算机,如果程序X.exe已完成,那么不要再等待了?

windows - 如何在 Perl 中线程安全地设置 STDOUT 编码?

根据文档,使用encoding模块与threads不是线程安全的,并且自perl1.18起已弃用。我在Windows7机器上使用perl5.16。我需要将输出转换为windows866编码。尝试运行线程时,以下代码解释器崩溃。useutf8;binmode(STDOUT,':encoding(cp866)');usethreads;my$thr=threads->create(sub{print"потокработает";})->detach();sleep1;print"основнойпотоктакжеработает";如果没有binmode(STDOUT,':cp866'