问题标签 [condition-variable]

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 投票
2 回答
502 浏览

c - 信号量术语

通常谈论的信号量......它们是否涉及忙等待?我对术语感到困惑。请告诉我,我能够得出的结论中哪些是正确的。

a)自旋锁涉及忙等待,所以为了避免这种情况,我们有信号量。
b) 信号量是一种自旋锁,但我们可以在不忙于等待的情况下拥有信号量
c)pthread_condition 变量与信号量做同样的事情吗?如果是这样,它们是否等同于 semaphore.h 库中的信号量。如果两者都代表相同的功能,我会感到困惑。

0 投票
1 回答
291 浏览

network-programming - 使用条件变量(POSIX 并发 api)真的会减慢我的并行网络代码吗?

我目前正在编写一个管理多台计算机上的并行渲染的应用程序。为此,我在我的服务器应用程序上有一个管理 TCP 连接的线程池,每个问题一个线程。如果其中一个网络线程接收到数据,我想在每个 TCP 线程中使用相同的条件变量来警告另一个线程。

问题:要使用signalPOSIX api 中的函数,我必须使用互斥锁。这意味着如果 2 个网络线程同时接收数据,它们将不得不等待互斥体空闲才能继续执行。

实际上,使用这个条件变量真的会减慢我的代码吗?如果我不想使用它,我也可以在另一个线程(调用wait条件变量的那个)中创建一个循环指令,以查看我的网络线程是否收到了一些东西。

非常感谢 :)

0 投票
0 回答
50 浏览

python - threading.Condition C API

是否有threading.Condition直接在Python C API中公开的类似对象?如果没有,我有什么选择?

0 投票
2 回答
379 浏览

c - 条件变量有队列吗?

我正在实现条件变量的等待操作。我的条件变量有一个结构。到目前为止,我的结构有一个监视器、一个队列和一个自旋锁。但我不确定条件变量本身是否应该有一个队列。我的通知如下所示:

但我想知道在通知函数或等待函数中我是否应该在监视器的等待队列中入队和出队?

谢谢

0 投票
1 回答
170 浏览

c - 等待和信号以外的 pthread

我正在开发一个即时消息应用程序。

这是我需要帮助的情况: 我的代码中的例程 fgets() 用户输入的消息。现在我需要唤醒一个线程,该线程具有将消息发送到套接字等的例程。我不确定如何执行此操作。

如果我使用互斥锁:我不希望我的第一个线程等待。因此我不想使用这个。同样,我不能使用 cond_variable。

请告诉我如何得到这个。

0 投票
2 回答
211 浏览

python - Python 多线程:需要建议使用条件变量同步 2 个线程

我只知道多线程的基本概念,目前遇到需要帮助的情况。

我有两个任务要完成,都应该连续执行。问题是第二个任务应该在第一个线程首先完成一些工作之后才开始。现在这两个线程类大致如下所示:

然而,事实是程​​序仍然随机执行而不管wait()和notify()。有人可以帮我解决这个问题吗?谢谢。

0 投票
2 回答
20820 浏览

multithreading - 忙等待和轮询有什么区别?

来自维基百科关于投票的文章

轮询,或轮询操作,在计算机科学中,是指客户端程序主动采样外部设备的状态作为同步活动。轮询最常用于输入/输出 (I/O),也称为轮询 I/O 或软件驱动 I/O。

轮询有时与忙等待轮询(忙等待)同义使用。在这种情况下,当需要 I/O 操作时,计算机只会检查 I/O 设备的状态,直到它准备好,此时设备被访问。换句话说,计算机一直等到设备准备好。
轮询还指反复检查设备是否准备就绪,如果不是,则计算机返回其他任务的情况。尽管不像忙等待那样浪费 CPU 周期,但这通常不如轮询、中断驱动的 I/O 的替代方案那么有效。

那么,当一个线程不使用“条件变量”时,是否会因为数据变化而被称为“轮询”或“忙于等待”呢?

0 投票
1 回答
1748 浏览

multithreading - pthread_cond_wait 没有 while 循环

就我而言,我可能没有任何循环,我只有一个 if 条件。所以,我希望当 temp == 'x' 时,threadA 应该这样做/这个。

  • 处理 ? 时循环是强制性的pthread_cond_wait吗?
  • 如果我们不需要循环,另一种编写代码的方法是什么?
  • 这是编写代码的正确方法吗?
0 投票
4 回答
3204 浏览

pthreads - 需要互斥锁来保护条件变量

据说需要互斥锁来保护条件变量。

这里是对声明为pthread_cond_t
OR的实际条件变量的引用
一个正常的共享变量count,其值决定信号和等待。
?

0 投票
3 回答
1104 浏览

c++ - 对 scoped_lock 解锁的无关调用

在以下博文中:

http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html

有一个 'push' 方法定义如下:

我的问题是:

  1. 为什么在 scoped_lock 变量上调用了显式的“lock.unlock()”?

  2. 它的目的是什么?

  3. 是否可以安全地删除它,导致“notify_one”方法调用在 scoped_mutex 的范围内?