multithreading相关内容

WindowsFormsSynchronizationContext和System.Events.UserPferenceChanged导致的用户界面冻结

我现在已经花了几天时间找到一个冻结我的公司应用程序的错误。可怕的用户首选项更改的用户界面冻结。这不是一个复杂的错误,但在相当大的应用程序中很难找到。有相当多的文章是关于这个错误是如何展开的,但没有关于如何指出错误代码的文章。我已经组合了一个解决方案,以来自多个较旧票证的日志机制的形式,并且(我希望)在它们的基础上做了一些改进。希望它能为解决此问题的下一位程序员节省一些时间。 如何识别错误? ..
发布时间:2022-06-09 09:00:56 C#/.NET

ROS错误。处理请求时出错:信号仅在主线程";中工作。

我正在使用Robot操作系统(ROS),并尝试创建一个服务器/客户端,其中服务器将引导客户端指定的ROS节点。要执行“启动”,我使用的是基于以下建议的rosLaunch:http://wiki.ros.org/roslaunch/API%20Usage 我可以在窗口中运行rocore,然后我可以运行启动良好的服务器。但是,只要我尝试通过客户端发送要引导的节点名,就会收到以下错误: “错 ..
发布时间:2022-06-06 12:49:52 Python

等同于线程的.NET核心。中止

背景 我有一个Service抽象。每个服务都有自己的WorkItem。能够从一些数据开始的工作项。该服务正在限制WorkItem的执行时间。假设单个工作项最多需要60秒。在此之后,Service应该会杀死它。 此代码从.NET框架迁移而来,我创建了一个运行Start(model)方法的Thread对象。然后代码类似于: Thread t = new Thread(workItem ..
发布时间:2022-05-25 13:43:48 C#/.NET

唤醒沉睡的线程的最好方法?

我的局域网上有一台仪器,每隔5-10ms发送一次UDP数据包。在我的应用程序中,我有一个读取器线程,它在套接字启动时分配一个具有大缓冲区的套接字,然后进入无限循环以读取累积的包,解析它们,将它们写入假脱机程序,然后休眠半秒(time.sleep(0.500))。 我有几个懒惰的数据使用者,其中大多数进行存档或生成被动统计数据。但有一个消费者(用于显示)需要最新数据,并且需要在查询假脱机程序之 ..
发布时间:2022-05-23 09:54:31 Python

在Kotlin中,使用线程还是协程更好?

我正在从应用程序发送邮件。由于邮件发送需要花费时间并阻塞主线程,因此我创建了一个新线程,并将邮件发送任务移交给新线程。对于发送邮件的大量并发请求,我必须创建大量线程。但创建线程似乎很慢。 我的问题是,如果我使用Kotlin的协程,它的性能是否比线程更好? 某些解释或提示非常可取。 推荐答案 我的问题是,如果我使用Kotlin的协程,它的性能是否比线程更好? 协程不是线程的 ..
发布时间:2022-05-13 11:05:34 其他开发

Kotlin协程中的可见性

我决定一头扎进Kotlin协程。我有一些关于能见度的问题。我理解,在没有ContinuationInterceptor的情况下,相同协程的不同部分可能由不同的线程执行。 如何保证挂起后的新线程具有正确的协程内部状态可见性? 例如: suspend fun doPost(customRatings : Map) : Int {...} f ..
发布时间:2022-05-13 10:55:52 其他开发

如何将协程直接分派到JVM上的主线程?

我正在为JVM设置一个基于Kotlin协程的网络框架。客户端和服务器类实现CoroutineScope,而coroutinecontext的重写是Dispatcher s.IO,因为我非常确定这是用于这种情况的正确调度程序。但是,我希望在主线程上处理读数据包,或者至少提供该选项。在没有阅读文档的情况下,我使用了Dispatcher s.Main,我现在意识到它是用于Android UI线程的。有没 ..

SemaphoreSlim的暂停是否违背了它自己的目的?

semaphore的真正力量是: 限制可以访问资源或池的线程数 并发资源 这是可以理解和清楚的。 但我一直没有机会处理Wait的重载,它接受超时整数-这似乎允许多个线程进入临界区,尽管我已显式设置信号量,不允许一次超过一个线程: private readonly SemaphoreSlim _mutex = new SemaphoreSlim(1); private vo ..
发布时间:2022-05-11 19:38:29 C#/.NET

Java公平信号量

我正在尝试理解这个旧考试任务的答案,在这个考试任务中,学生应该使用Java重入锁来实现公平的二进制信号量。我不明白这些计数器的意义: int next = 0; int nextToGo = 0; int myNumber; 它在对任务的描述中说:“您可以假设程序中最多有20个线程使用信号量。此外,在程序的一次运行中最多执行1000万个信号量操作。” 在任务的解决方案中,它说:“每个试 ..
发布时间:2022-05-11 19:29:11 Java开发

WebView2在异步任务中的并行使用

我有一个简单的默认Windows桌面表单Form1和一个按钮btn_Go作为测试。 我想运行多个并行的WebView2实例,并处理呈现页面中的html代码。 要并行运行WebView2,我使用了SemaphoreSlim(设置为并行2)。另一个SemaphoreSlim用于等待WebView2呈现文档(有一些时间延迟)。 但我的代码落在await webBrowser.EnsureCore ..
发布时间:2022-05-11 19:10:28 C#/.NET

从多个线程调用Eigen SimplicialLLT时,结果不正确

我正在尝试使用SimplicialLLT来计算SparseMatrix。由于我的程序在循环中运行,并且每个稀疏矩阵都不同,因此我尝试按如下方式并行化对SimplicialLLT的调用。这不是确切的运行代码。我已尝试复制进行调用的部分。 #include #include #include "Eigen/Core" #include "Eigen/LU ..
发布时间:2022-05-11 09:14:59 C/C++开发

如何在C++中区分高性能和低性能内核/线程?

在谈到多线程时,线程似乎经常被视为平等--与主线程相同,但在它旁边运行。 然而,在一些新的处理器上,如Apple "M" series和即将推出的英特尔Alder Lake系列,并非所有线程都具有同等的性能,因为这些芯片具有单独的高性能内核和高效率、较慢的内核。 这并不是说现在还没有超线程之类的东西,但这似乎具有更大的性能影响。 有没有办法查询std::thread的属性并强制执 ..
发布时间:2022-05-08 19:53:43 C/C++开发

用户界面线程块

我已经创建了一个简单的WPF应用程序,并向默认窗口添加了一个按钮。当我单击该按钮时,将调用一个模拟的Long工作方法(使用Thread.Sept(15000)模拟)。我正在尝试让按钮异步执行。然而,尽管有下面的在线示例,但只要我一单击,按钮和整个窗口就会锁定,并一直保持到线程。睡眠(...)完事了。 您知道为什么会发生这种情况吗? 代码如下: private void butto ..
发布时间:2022-04-27 14:40:43 其他开发