草庐IT

【JavaEE】进程和线程

全部标签

linux - 操作系统内核是否以与 IPC 相同的方式与进程通信?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion进程使用variouswaysofIPC(interprocesscommunication)与另一个进程通信,例如共享内存、消息传递、信号?我了解到anOSkernelcancommunicatewithaprocessusingsignals,如果我是对的,通过相同的信号发出信号也是IPC的一种方式。操作系统内核是否使用其他IPC方式(例如共享内存、消息传递)与一个或多个进程通信?如果需要具体一点,我

c++ - 启动 Boost 线程时的保证

我正在使用Boost和VisualStudio2013don'tsupportstheC++11memorymodel.启动Boost线程时是否有任何内存保证?我在JavaLanguageSpecification17.4.5中寻找保证:Acalltostart()onathreadhappens-beforeanyactionsinthestartedthread.在我的例子中,我想创建一个(非线程安全的)TCP客户端,而不是启动一个接收线程:structConnection{boost::shared_ptrclient;};autoclient=boost::shared_ptr

c# - 阻止进程创建 MessageBox

我在我们的应用程序中使用的系统有问题:有时,当我们向该系统询问数据时,他会弹出一个MessageBox来告诉我们类似这样的信息:“我无法检索您的数据,要搜索的数据太多了”。这个问题是用户可能无法看到或关闭弹出窗口,因此这会阻止整个应用程序(解释为什么用户无法关闭/看到弹出窗口会花费太多时间并且偏离主题,这很糟糕但我们必须处理它)。因此,作为一个临时解决方案,我想阻止这个特定进程创建MessageBox。我在网上寻找解决方案并找到了关于CBTProc的信息这似乎提供了一种对特定Windows事件(进程创建窗口的请求)作出react并指示操作系统阻止该请求的方法。这是要走的路吗?我测试了S

c++ - qt在windows线程中发出信号

我正在开发一个QT应用程序。根据我的要求,我需要创建一个Windows线程,我必须在其中发出一个信号来通知我在不同类中的函数。当我尝试发出信号时,出现错误:cannotcallmemberfunction'voidDevice::DataRecieved(QByteArray)'withoutobjectemitDataRecieved(Rxdata);。是否有可能从Windows线程发出QT信号。谢谢。这是我的代码:DWORDWINAPIDevice::RxThread(LPVOIDpar){XLstatusxlStatus;unsignedintmsgsrx=RECEIVE_EVE

java - Java 中的多线程 : Do different Operating Systems offer different performance?

这可能是一个非常愚蠢的问题,但我并没有真正在网上找到答案(至少我不能理解),我只找到了一些基准测试结果likethese使用特定的基准测试软件。让我给出一些背景信息:我目前正在Ubuntu机器上开发一个java多线程程序,我在办公室有一台Windows10机器用于测试目的,该程序应该在连接的Windows7机器上运行到生产线。我对这种情况下的Ubuntu性能不感兴趣,因为客户想在Windows机器上使用它。当我在Windows10机器上测试该软件时,它只是“感觉”它比在Windows7PC上运行得更快,我必须说我没有对Windows7机器的完全访问权限,所以我不能接受测试它的时间,而且

java - 获取另一个 Java 进程的工作目录

我可以使用这段代码获取当前Java程序的工作目录:路径path=Paths.get(*ClassName*.class.getProtectionDomain().getCodeSource().getLocation().toURI());我还可以使用此命令获取运行Java进程的命令行参数(但输出中没有目录)wmicprocessgetCommandLinewherename='java.exe'/value是否有可能获得另一个Java进程的工作目录(更好地以编程方式)?也许它可以用一些jdk/bin实用程序来解决? 最佳答案 您

windows - 在 Windows 中更改 VB 应用程序的进程名称和发布者名称

我正在编写VB表单应用程序。创建的exe文件在任务管理器中显示项目名称。我想要一个不同的名称作为流程名称、流程描述和发布者名称的自定义名称。我正在使用VisualStudio2013。我该怎么做? 最佳答案 您需要更改项目设置。在解决方案资源管理器中的项目名称下->找到“我的项目”作为Spanner图标。打开它会打开项目设置。将程序集名称和根命名空间设置为所需的名称。将标题设置为您希望在任务管理器中看到的名称。公司名称应与任务管理器中的发布者名称相同。现在复制exe文件并给出所需的名称。你应该可以开始了!

C++ 从异步线程更新 Windows 窗口

所以我刚开始使用C++并想创建一个带有按钮的窗口,该按钮启动一个异步线程用于一个从5计数到0的计数器,代表一个耗时很长的任务。该数字应该已经显示在窗口上,并且在计数器计数时每秒更新一次。为此,子线程必须以任何方式与主窗口线程的消息循环进行通信。我试图通过以下方式做到这一点:使用主窗口的窗口句柄发送UpdateWindow使用主窗口的窗口句柄发送PostMessage但在这两种情况下,窗口都不会更新。因此,我怀疑通过将窗口句柄从主线程发送到子线程或将UpdateWindow消息从子线程发送到主线程或两者都发生错误,或者我完全偏离轨道并且一切都是错误的。也许我的思路也是错误的,我应该换一种

c++ - 从辅助线程调用 UpdateWindow()

我有一个用于显示非常复杂的vector图形的Windows应用程序。由于绘图需要一段时间才能完成,我将渲染逻辑移到了一个单独的线程中。相关代码片段如下。这里的CCanvas是从CWnd派生出来的,m_MemDC是绘制所有图形的CDC指针。OnPaint()处理程序将此memdc内容位传输到PaintDC。在Render()方法中,一旦图像绘制完成,我必须更新显示窗口。这里我直接调用了Invalidate()和UpdateWindow()方法。从辅助线程调用这些方法是否安全?voidCCanvas::UpdateDisplay(){::SetEvent(m_hRenderWaitEven

java - 从批处理文件中终止从 Java 启动的进程

我有一个启动服务器的第三方.bat文件(wso2server.bat)。我开始了Processprocess=Runtime.getRuntime.exec(cmd/Cstartcmd/CC:\wso\wso2esb-4.9.0\bin\wso2server.bat);我试图阻止这一切process.destroy();andprocess.destroyForcibly();process.isAlive()在销毁后返回“false”。但是服务器还在运行!我也试过用ProcessBuilderpb=newProcessBuilder(params);process=pb.start(