问题标签 [multithreading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3950 浏览

c# - 实例构造函数设置一个静态成员,它是线程安全的吗?

我正在重构一些代码,并且想知道lock在实例构造函数中使用 a 。

请确认

  1. 实例构造函数是线程安全的。
  2. lock 语句阻止访问该代码块,而不是静态“计数器”成员。

如果原始程序员的意图是让每个实例都知道它的“计数”,我将如何同步对“计数器”成员的访问,以确保另一个线程不是新线程MyClass并在该线程设置它之前更改计数数数?

仅供参考 - 这个类不是单例。实例必须简单地知道它们的数量。

0 投票
9 回答
7351 浏览

c# - 单例成员的线程安全使用

我有一个多个类使用的 C# 单例类。Instance对方法的访问是Toggle()线程安全的吗?如果是,根据什么假设、规则等。如果不是,为什么以及如何解决?

0 投票
3 回答
611 浏览

c - 多线程的最佳方式?

C语言中多线程的最佳方法是什么?我想要一些非常高效而不是 CPU 的东西。谢谢。

0 投票
5 回答
738 浏览

vb.net - 如何确保在 IIS 中使用同一个线程执行代码?

我们在 IIS6 中托管的 Web 服务中使用了第三方 dll。问题是一旦这个 dll 被加载到内存中,如果一个与创建它的线程不同的线程试图执行 dll 中的任何代码,就会抛出异常AccessViolationException 。工作进程是多线程的,每次调用 Web 服务都会从池中获得一个随机线程。我们试图从内存中卸载它并在每次需要时重新加载它,但我猜只有前端是 .Net,其余的是非托管的,因此它实际上从未完全从内存中卸载。我们正在使用 VB 和 .Net 2.0。有什么建议么?

(对罗伯·沃克的回应)

我们考虑过创建一个新线程并使用它来调用 dll,但是我们如何让线程坐下来等待调用呢?如何在没有 .Net 3.0 提供的 Dispatcher 类的情况下将调用委托给线程?创建一个隐藏表单并将其放入消息循环中可能会起作用。然后我们可以调用表单的 Invoke() 方法。但是,如果我们在 IIS 托管的 Web 服务中创建表单,我会看到很多问题。

0 投票
8 回答
8500 浏览

c# - C# 中是否有在给定线程上引发异常的好方法

我想写的代码是这样的:

我知道我可以让线程 B 以线程安全的方式定期检查线程 A 是否设置了标志,但这会使代码更加复杂。有没有更好的机制可以使用?

这是一个更充实的定期检查示例:

0 投票
6 回答
2588 浏览

silverlight - Silverlight DataBinding 跨线程问题

我有一个 Image 控件,它的源绑定到对象上的属性(字符串 url 到图像)。进行服务调用后,我使用新 URL 更新数据对象。在调用 PropertyChanged 事件后,它离开我的代码后引发异常。

数据结构和服务逻辑都在一个不了解 UI 的核心 dll 中完成。当我无法访问 Dispatcher 时,如何与 UI 线程同步?

PS:访问 Application.Current.RootVisual 以获取 Dispatcher 不是解决方案,因为根视觉对象位于不同的线程上(导致我需要防止的确切异常)。

PPS:这只是图像控件的问题,绑定到任何其他 ui 元素,为您处理跨线程问题。

0 投票
2 回答
442 浏览

.net - Is there a way to ensure entire code block execution in a .NET thread?

In my C# program, I have a thread that represents a running test, which can be aborted by a click on a button labeled "Interrupt execution". In order for the thread (and therefore the test) to terminate in an elegant manner (and do some vital work beforehand), this button is enabled only in some well-defined moments, in which I catch ThreadAbortedException, do Thread.ResetAbort() and die beautifully (that is, the thread).

The problem is that, in the time window in which aborting is possible, there are some tasks that need to be done from start to finish once initiated, and, so, I fear TAE. Locks don't provide a solution for this, and, although finally blocks do, I don't find it elegant to wrap important code in the following manner:

However, I didn't find any other solution.

Is this another way to delay the interference of ThreadAbortException until the end of the block?

0 投票
6 回答
9466 浏览

performance - 单个 CPU 上的多线程和性能

在没有超线程的单个 CPU 的计算机上使用多个线程是否有任何性能优势?

0 投票
12 回答
44036 浏览

c# - C#中的多线程启动画面?

我希望在应用程序加载时显示启动画面。我有一个带有系统托盘控件的表单。我希望在此表单加载时显示初始屏幕,这需要一些时间,因为它正在访问 Web 服务 API 以填充一些下拉列表。我还想在加载之前对依赖关系做一些基本的测试(即web服务可用,配置文件可读)。随着启动的每个阶段的进行,我想用进度更新启动屏幕。

我已经阅读了很多关于线程的内容,但是我迷失了应该从哪里控制它(main()方法?)。我也错过了如何Application.Run()工作,这是应该创建线程的地方吗?现在,如果带有系统托盘控件的窗体是“活”窗体,那么飞溅应该来自那里吗?在表单完成之前它不会加载吗?

我不是在寻找代码讲义,更多的是一种算法/方法,所以我可以一劳永逸地解决这个问题:)

0 投票
3 回答
10415 浏览

.net - 如何制作 WCF 服务 STA(单线程)

我有一个包含 UI 组件的 WCF 服务,这迫使我处于 STA 模式。

如何将服务行为设置为 STA 模式?


该服务使用对 WPF DLL 文件的引用,该文件打开 UI 窗口(用作查看端口)以进行图片分析。当服务尝试创建该项目的实例(从窗口继承)时,它会引发异常:

调用线程必须是 STA