问题标签 [critical-section]

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 投票
5 回答
14323 浏览

pthreads - pthreads:来自临界区的 pthread_cond_signal()

我在线程A中有以下代码,它使用pthread_cond_wait()

我在线程 B 中有以下代码,它向线程 A 发出信号

pthread_cond_signal(&my_wait)如果没有其他线程,如果移出关键部分块,如下所示会有什么不同吗?

0 投票
3 回答
489 浏览

critical-section - 关键部分

我不确定。

例如,当我在 C++ 中使用critical_section/mutex/semaphor 时,如何防止busy_wait 问题?

我的意思是当一个线程到达临界区并且临界区被其他线程占用时,是什么阻止线程浪费循环时间并且什么也不等待?

例如,我应该调用 TryEnterCriticalSection 并检查线程是否获得所有权,否则调用 sleep(0) 吗?

我有点困惑

谢谢

0 投票
3 回答
20003 浏览

cuda - 在 CUDA 中实现关键部分

我正在尝试使用原子指令在 CUDA 中实现一个关键部分,但我遇到了一些麻烦。我创建了测试程序来显示问题:

不幸的是,这段代码硬冻结了我的机器几秒钟,最后退出,打印出消息:

这意味着其中一个 while 循环没有返回,但似乎这应该有效。

提醒atomicExch(unsigned int* address, unsigned int val)一下,原子地设置存储在地址中的内存位置的值val并返回该old值。所以我的锁定机制背后的想法是它最初是这样的0u,所以一个线程应该通过while循环,所有其他线程应该等待while循环,因为它们将读取locks[id]1u. 然后,当线程完成临界区时,它会将锁重置为0u以便另一个线程可以进入。

我错过了什么?

顺便说一句,我正在编译:

0 投票
5 回答
23580 浏览

multithreading - 读取对象时是否需要锁定对象?

我正在编写一个程序,其中有一个由多个线程共享的对象:

  • A)多个写线程写入对象(都运行相同的功能)
  • B) 每 5 秒访问一次对象的读取线程
  • C)访问对象的读取线程有用户请求

在写入对象时显然需要锁定对象,因为我们不希望多个线程同时写入对象。

我的问题是:

  1. 读取对象时是否也需要锁定对象?
  2. 我是否正确地认为,如果我们只是在编写时锁定对象,一个关键部分就足够了;但是如果我们在读或写的时候锁定对象,互斥量是必要的吗?

我问这个问题是因为在 Microsoft Office 中,两个 Word 实例无法以读/写访问模式访问文档;但是当文档以读/写模式打开时,可以打开另一个 Word 实例以只读模式访问文档。相同的逻辑是否适用于线程?

0 投票
3 回答
913 浏览

c++ - 如何锁定队列变量地址而不是使用临界区?

我有 2 个线程和全局队列,一个线程 (t1) 推送数据,另一个线程 (t2) 弹出数据,我想在不使用函数的情况下同步此操作,我们可以使用 Windows API 将该队列与临界区一起使用。

Queue是全局的,我想知道如何同步,是通过Queue的锁定地址来完成的吗?

是否可以使用 Boost Library 来解决上述问题?

0 投票
3 回答
60297 浏览

c++ - 如何在 OpenMP 中使用锁?

我有两段 C++ 代码在 2 个不同的内核上运行。他们都写入同一个文件。

如何使用 OpenMP 并确保没有崩溃?

0 投票
1 回答
838 浏览

c++ - 单元测试引用了关键部分类

我正在看一个简单的类,我必须管理关键部分和锁,我想用测试用例来介绍它。这是否有意义,人们将如何去做呢?这很困难,因为验证类工作的唯一方法是设置非常复杂的线程场景,即使这样也没有一个好的方法来测试 Win32 中关键部分的泄漏。有没有更直接的方法来确保它正常工作?

这是代码:

关键部分.hpp:

关键部分.cpp:

0 投票
3 回答
3955 浏览

php - 如何保护 PHP 中的关键部分?

我对这个主题进行了一些搜索,但没有发现任何有价值的东西。

如果我不使用 PHP 默认会话处理程序,则请求级别没有会话锁定。所以,我必须自己保护关键部分。

在 Java 中,我们已经同步了. 在 C# 中,我们有lock

在 PHP 中,如何做到这一点?

0 投票
2 回答
4425 浏览

multithreading - 如何使用关键部分 - MFC?

我正在研究一个小例子,在我的例子中使用临界区有点好奇。我正在做的是,我有一个 CStringArray(其中添加了 10 个元素)。我想将这 10 个元素(字符串)复制到另一个 CStringArray(这样做是为了了解线程和关键部分),我创建了 2线程,Thread1 会将前 5 个元素复制到另一个 CStringArray,Thread2 将复制其余元素。这里使用了两个 CStringArray,我知道一次只能访问 1 个线程。我想知道如何通过使用临界区来解决这个问题或任何其他方法。

0 投票
3 回答
3786 浏览

c# - C# 数组中的线程安全

是否有 2 个不同的线程:

  • 从 C# 数组中读取一次(例如从第一个位置),
  • 另一个写入相同的 C# 数组但写入不同的位置(例如,写入最后一个位置)

线程安全与否?
(我的意思是这里没有锁定阅读或写作)