问题标签 [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 回答
9652 浏览

multithreading - 可以让多个线程将相同的值写入相同的变量吗?

我了解竞争条件以及多个线程如何访问同一个变量,一个人所做的更新可以被其他人忽略和覆盖,但是如果每个线程都将相同的值(不是不同的值)写入同一个变量怎么办?甚至这会导致问题吗?这段代码可以:

GlobalVar.property = 11;

(假设该属性永远不会被分配除 11 以外的任何值),如果多个线程同时执行它会导致问题吗?

0 投票
11 回答
96751 浏览

c# - 什么时候应该在 C# 中使用 volatile 关键字?

谁能很好地解释 C# 中的 volatile 关键字?它解决了哪些问题,没有解决哪些问题?在哪些情况下它会节省我使用锁定的时间?

0 投票
8 回答
37087 浏览

c - 非阻塞 pthread_join

我正在编写多线程服务器的关闭代码。如果一切顺利,所有线程都应该自行退出,但是线程卡住的可能性很小。在这种情况下,使用非阻塞连接会很方便所以我可以做到。

有没有办法进行非阻塞 pthread_join?某种定时加入也会很好。

像这样的东西:

我可以想到更多非阻塞连接有用的情况。

似乎没有这样的功能,所以我已经编写了一个解决方法,但这并不像我想要的那么简单。

0 投票
6 回答
2166 浏览

algorithm - 证明多线程算法的正确性

多线程算法特别难以设计/调试/证明。Dekker 算法是一个很好的例子,说明了设计一个正确的同步算法是多么困难。Tanenbaum 的现代操作系统在其 IPC 部分中充满了示例。有没有人对此有很好的参考(书籍,文章)?谢谢!

0 投票
5 回答
1423 浏览

java - 从syncExec返回变量的最佳方式是什么?

在我的 SWT Java 应用程序中,我经常希望从 Display.syncExec() 调用中返回信息。到目前为止,我发现的最佳方法是:

我认为这是允许的,因为 ArrayList 是线程安全的,但是我应该使用更好的容器还是更简单的方法?

0 投票
3 回答
7373 浏览

multithreading - 解释 Windows Minidump 中的堆栈

作为一个刚刚开始学习复杂的计算机调试的人,对于我的生活,我无法理解如何阅读 Windbg 中转储的堆栈文本。我不知道从哪里开始如何解释它们或如何去做。任何人都可以为这个可怜的灵魂提供方向吗?

即(实际上我手头上唯一的垃圾场)

我知道问题与 Nvidia 显示驱动程序有关,但我想知道的是如何实际读取堆栈(例如,什么是 b69dd8f4?):-[

0 投票
13 回答
18941 浏览

c - 使用 C/Pthreads:共享变量是否需要是 volatile 的?

以C编程语言和Pthreads作为线程库;线程之间共享的变量/结构是否需要声明为 volatile?假设它们可能受到锁的保护(也许是障碍)。

pthread POSIX 标准对此是否有任何发言权,这是依赖于编译器还是两者都不依赖?

编辑添加:感谢您的出色回答。但是如果你使用锁呢?例如,如果您使用障碍怎么办?或者使用诸如比较和交换之类的原语直接和原子地修改共享变量的代码......

0 投票
8 回答
27661 浏览

c - 如何保证 64 位写入是原子的?

当在基于 Intel x86 的平台(特别是基于 Intel 的 Mac 使用 Intel 编译器运行 MacOSX 10.4)上用 C 编程时,何时可以保证 64 位写入是原子的?例如:

如果在对 y 的第一次赋值完成执行后另一个线程正在检查 y 的值,我想确保它看到值 0xfedcba87654321 或值 0x12345678abcdef,而不是它们的混合。我想在没有任何锁定的情况下执行此操作,并且如果可能的话,无需任何额外的代码。我希望,在能够支持 64 位代码(MacOSX 10.4)的操作系统上使用 64 位编译器(64 位 Intel 编译器)时,这些 64 位写入将是原子的。这总是正确的吗?

0 投票
6 回答
4785 浏览

multithreading - 在 Delphi 中,TDataSet 线程安全吗?

我希望能够在它自己的线程中异步打开一个 TDataSet,以便主 VCL 线程可以继续运行直到完成,然后让主 VCL 线程从该 TDataSet 读取。我做了一些实验并且遇到了一些非常奇怪的情况,所以我想知道是否有人以前做过。

我见过一些示例应用程序,其中 TDataSet 在单独的线程中创建,它被打开,然后从中读取数据,但这都是在单独的线程中完成的。我想知道在另一个线程打开数据源之后从主 VCL 线程读取 TDataSet 是否安全。

我在 Delphi 7 中进行 Win32 编程,使用来自DAC for MySQL的 TmySQLQuery作为我的 TDataSet 后代。

0 投票
6 回答
81813 浏览

java - ExecutorService 中的活动线程

任何想法如何确定当前运行的活动线程数ExecutorService