草庐IT

【多线程】Thread类

全部标签

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

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

c - Windows 上多线程应用程序中非阻塞服务器/监听套接字的最佳方法?

我正在Windows上编写TCP服务器/客户端应用程序,以熟悉WinsockAPI。我有UNIX背景,想知道以下哪种方法是实现应用程序的最佳方法:首先是规范必须能够在多处理器和单处理器系统上很好地扩展。没有硬件连接限制。应用程序既可以监听连接,充当服务器,也可以充当客户端。多线程。第一种方法:在“服务器”线程中用于监听的非阻塞类选择套接字。我们为每个连接的客户端生成一个单独的线程。第二种方法:在“服务器”线程中阻塞用于监听的套接字。我们为每个连接的客户端生成一个单独的线程。第三种方法:在“服务器”线程中用于监听的非阻塞类选择套接字。每个传入连接都没有单独的线程,我想协议(protoco

php - Windows 中使用 PHP 的应用程序线程

我正在制作一个PHP应用程序,该应用程序生成子进程,其中的参数详细说明了它们应该执行的工作。更具体地说,子进程将处理来自大型MySQL数据库的行,而父应用程序将对这些行进行计数并生成约50个进程,其中包含要处理的行跨度。我需要一种方法让父进程知道子进程是否完成。我以前在Linux中制作过这个应用程序,使用MySQL表供子进程checkin。这次我想独立于MySQL进行进程管理(现在我在Windows中)。有没有办法让PHP父进程在创建子进程时获取子进程的“句柄”并观察它的事件?我希望我清楚我正在尝试做的事情的要点。任何答案和建议将不胜感激。除了使用其他编程语言的建议-我正在使用许多PH

c++ - 线程提前终止,代码为 255

我试图在一个线程中运行我的程序的一部分,但得到了一个不寻常的结果。我已经用changessuggestedbyRemus的结果更新了这个问题,但由于我仍然遇到错误,我觉得问题仍然悬而未决。我已经在一个dll中实现了功能,以绑定(bind)到一个供应商软件中。一切正常,直到我尝试在此dll中创建一个线程。这是DLL的相关部分:extern"C"{__declspec(dllexport)void__cdeclccEntryOnEvent(WORDevent);}定义供应商软件调用的函数,然后:usingnamespacestd;HANDLELEETT_Thread=NULL;static

c - 正确终止多线程 Windows 控制台应用程序

下面是我从我正在进行的一个更大的项目中拼凑出来的一个简短的概念证明。该项目有一个使用CreateThread创建的工作线程,用于监视目录的更改。我有一些清理代码需要像关闭句柄和释放一些内存一样运行。该应用程序不作为后台进程或服务运行。它通过命令行运行,一直运行到用户关闭命令窗口或按下Ctrl-C。有更好的方法吗?我尝试使用atexit但是当进程被终止时显然没有被调用。请注意,我使用的是C,而不是C++,并且没有使用MFC、AFX或WindowsAPI以外的任何其他API。根据评论,我想这的另一部分是如何在多线程环境中正确终止应用程序?这样可以吗,还是我应该在thread_func中调用

windows - 用户级线程内核级线程和纤程

我知道纤程在线程的上下文中运行。它们只是用户级别的。我知道线程可以是用户级或内核级。当您在用户级应用程序中创建线程时,它也是用户级的吗?您能否在您的用户应用程序中创建内核级线程?这些用户级线程也是内核调度的?当您在.NET中调用CreateThread时,内核如何发挥作用?CreateThread函数是否需要通过susbsystemdll到执行层,一直到内核才能创建用户级线程? 最佳答案 在Windows平台上,用户态进程(应用程序)中的线程是用户态线程,内核态进程中的线程是内核态线程。您不能在用户模式进程中创建内核模式线程。在Wi

【多线程基础】 线程安全及解决方案(看这一篇就够了)

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🦾🦾🦾目录前言1.造成线程不安全的原因有哪些呢?1.1什么是原子性1.2什么是内存可见性1.3共享变量可见性实现的原理 1.4什么是指令重排序2.解决线程安全问题2.1引入关键字synchronized解决线程不安全问题(1) synchronized的使用方法(锁)(2)synchronized的作用 (3)优化后的代码(加锁后)2.2.关于锁/同步监视器的总结(重点掌握):总结1:认识同步监视器(锁) ----- synchronized(同步监视器){}总结2:同步代码块的执行过程(重点理解)总结

c# - 如何避免主体从工作线程传播到 GUI 线程

我们有一个带有工作线程的Windows应用程序需要更新GUI。我们使用BeginInvoke异步执行此操作。我们的问题(在下面的示例中演示)是Principal被传播到我们想要避免的GUI线程,因为在我们的实际应用程序中,我们执行的服务器请求由于错误的身份而失败。它是一种避免这种传播的方法吗?privateThread_thread;publicForm1(){InitializeComponent();Thread.CurrentPrincipal=newGenericPrincipal(newGenericIdentity("MainUser"),new[]{"User"});_t

windows - 是否可以将断点条件设置为 "break when called by another thread"?

我正在调查一个可能由多线程引起的问题。数据不断被一个线程读取,我想看看它是否被另一个线程读取。我可以设置断点并按住F5并检查它是否在另一个线程中中断,但这有点烦人。是否可以将断点条件设置为“被另一个线程调用时中断”? 最佳答案 您可以设置一个过滤器(参见UsingBreakpoints)。例如,可以在ThreadId上设置过滤器。要设置过滤器,请右键单击断点,选择Conditions...,然后输入ThreadId!=作为过滤器表达式。确保表达式中没有任何空白字符。否则,您将收到一条不太有用的错误消息。

C++ 暂停线程并通过不同的线程重新激活

我没有做过多线程,所以我不太清楚如何搜索这个问题。可能已经有人回答了,我只是不太清楚自己在寻找什么。基本上,我希望有一种方法可以在线程执行的特定点暂停线程。然后我希望能够在线程通过不同的线程暂停后立即恢复该线程。Windows上有类似的东西吗? 最佳答案 尝试使用std::condition_variable。条件变量是可用于阻塞线程的“同步原语”。您可以在此处找到有关条件变量的更多信息:http://en.cppreference.com/w/cpp/thread/condition_variable下面是一个快速C++程序的示例