cost 274 ms
异步生产者-消费者是否有助于在整个程序期间不窃取线程? - Is having async producer-consumer helps to not steal a thread for duration of whole program?

下面的代码从 tcp 接收消息并将它们传递给适当的消息处理程序。 根据消息类型,消息处理程序可能需要几分钟或几秒钟来处理它。 我选择了为每种消息类型设置单独的处理程序的设计。 但是,现在我在想: 即使我有异步生产者-消费者( await _messages.Reader.WaitToReadAsy ...

一旦生产了单个项目,生产者线程的通知就不会到达消费者线程 - notification from producer thread is not reaching to consumer thread once single item is produced

在下面的代码片段中,一旦生产者生产了单个项目,生产者线程到消费者线程的通知似乎就不会到达,并且由于这种行为,一旦生产者完成生成相当于缓冲区大小的项目,那么只有消费者开始消费项目。 任何人都可以建议我们应该如何使用信号量来解决这个问题。 ...

无法从 BlockingCollection 检索数据块<t></t> - Cannot retrieve chunks of data from BlockingCollection<T>

我经常发现自己确实想要 stream 块中的数据而不是一个接一个。 通常我在需要执行一些基于 I/O 的操作时这样做,比如我想限制往返的数据库插入。 所以我得到了这个不错的小扩展方法: 这工作得很好,但我注意到它不适用于BlockCollection&lt;T&gt; GetConsumingEnu ...

kafka 在消费者中产生消息 - kafka produce messages in consumer

我有一个需要将消息传递到多层处理的应用程序。 我需要这样做,因为所有新消息都应该放入第一个通用主题中,以便可以对其进行处理以计算类型,然后将它们放入另一个主题中(以进行进一步处理),从现在开始相同key的消息,go自动直接转到第二个主题。 我打算为每一层创建多个主题。 消息首先 go 进入第一层并得 ...

传播最新数据的线程安全缓冲区 - Thread-safe buffer that propagates the latest data

我有一个数据源,它每 15 到 20 毫秒创建(产生)一个PointF 。 我需要每 10 毫秒存储(消耗)这些点。 我的做法是使用一个3点宽的缓冲区和指针来实现无锁访问: 我的想法是一旦新数据到达,它将存储在旧数据的“上方”。 然后将读指针设置为这个 position,然后递增写指针。 如果现在已 ...

如何正确使用 ConcurrentQueue 在单独的线程上写入文件? - How to properly use a ConcurrentQueue for writing in a file on a separate thread?

我有一个从外部接收数据的应用程序,我正在努力做到这一点,以便将这些数据写入文件是在一个单独的线程中完成的(因为将它写入直接接收它的线程会导致问题足够快地写入数据)。 在我看来, ConcurrentQueue很适合这个。 但是我有一个问题,因为下面的代码根本不会写入文件: 声明: 消费者: Co ...

即使 LinkedBlockingQueue 为空,线程也会阻塞 - Thread blocking even when LinkedBlockingQueue is empty

为了进行清楚的调查,我只有一个线程生成一个实体,一个线程使用它。 这两部分共享LinkedBlockingQueue。 在使用实体后,线程将其转发给其他线程以将实体保存在数据库中。 在通过队列插入和删除实体的几次迭代后,生产线程停止工作。 调试日志显示它就像队列阻塞插入操作一样,即使队列为空或有足够 ...

Fast producer,slow consumer,bounded channel,降低唤醒producer的频率 - Fast producer, slow consumer, bounded channel, reduce the frequency of awakening the producer

我有一个基于有界Channel&lt;T&gt;的生产者-消费者场景¹。 这些项目来自 RDBMS,生产者连接到 RDBMS 并一个接一个地获取它们。 特殊之处在于,我没有在生产者的整个生命周期内保持数据库连接的奢侈。 我必须在频道已满时关闭连接,并在频道再次有空间可用于新项目时重新打开连接。 所以 ...

Golang:如何判断通过缓冲通道进行通信时生产者或消费者是否较慢? - Golang: How to tell whether producer or consumer is slower when communicating via buffered channels?

我在 Golang 中有一个应用程序,其中我有一个管道设置,每个组件执行一些工作,然后通过缓冲通道将其结果传递给另一个组件,然后该组件对其输入执行一些工作,然后将其结果传递给另一个组件通过另一个缓冲通道,依此类推。 例如: C1 -&gt; C2 -&gt; C3 -&gt; ... 其中 C1 ...

当限制较高时,HttpClient.SendAsync 一次处理两个请求 - HttpClient.SendAsync processes two requests at a time when the limit is higher

我有一个 Windows 服务,它从数据库中读取数据并使用多个 REST API 调用处理这些数据。 最初,此服务在计时器上运行,它会从数据库中读取未处理的数据,并使用使用SemaphoreSlim限制的多个线程对其进行处理。 这工作得很好,除了数据库读取必须等待所有处理完成才能再次读取。 Serv ...

为什么有时在生产者-消费者问题的输出中,消费者得到的是以前的值,而不是生产者产生的新值? - Why sometimes in the output of the producer-consumer problem, the consumer is getting a previous value instead of the new value produced by producer?

我有下面的 Java 代码:class Q2 { int n; boolean valueSet = false; synchronized int get() { while(!valueSet) try { ...

我需要帮助 我想退出程序 - I need help I want to exit the program

**我在这段代码中需要帮助它是关于使用多个生产者和消费者的有界缓冲区问题的简单代码它的工作并且没有问题......但是当生产者完成时消费者仍在等待并且程序永远运行所以怎么能我解决这个**``` 当它完成代码退出()时,我试图创建一个共享计数器 ...

多个消费者线程需要从队列中读取相同的元素 - Multiple consumer threads need to read the same element from a queue

我要求多个消费者需要从 python 中的队列中读取所有元素。我正在使用 ThreadpoolExecutor 提交任务。 例如,如果队列有 3 个元素并且有 3 个消费者线程,则所有 3 个消费者都需要从队列中获取所有 3 个元素。 queue.get() 的问题在于它读取元素并将其从队列中弹出 ...

一个生产者,多个消费者。 如何在无界缓冲区中使用条件变量? - One producer, multiple consumers. How to use condition variables with unbounded buffer?

尽管 Stackoverflow 上有很多类似的问题,但我无法为以下生产者-消费者问题提出解决方案: 我的程序有三个线程: 一个写入器线程从文件中读取数据,将数据保存到sensor_data_t结构中,然后使用sbuffer_insert(buffer, &amp;sensor_data)将其写入 ...

Rust Tokio“未来无法安全地在线程之间发送”,如何使用 watch::channel 共享 Vec<u8> 数据?</u8> - Rust Tokio "future cannot be sent between threads safely ", How to use watch::channel to share Vec<u8> data?

该项目正在实施 TcpListener 服务。 它监视 pc 事件并向 TCP 客户端广播。 根据需求(一个生产者和许多消费者)。 但是代码引发了“未来不能安全地在线程之间发送”错误:use tokio; use tokio::{io::AsyncWriteExt, net::TcpStream, ...

Channel/BlockingCollection alloc 免费替代品? - Channel/BlockingCollection alloc free alternatives?

我最近对我的框架进行了基准测试,发现它分配了大量垃圾。 我正在使用Channel&lt;T&gt;并且TryRead或ReadAsync操作在每次调用时分配 memory。 所以我用BlockingCollection&lt;T&gt;交换了它,它也在 TryTake 期间分配了TryTake 。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM