【发布时间】:2020-01-28 08:32:14
【问题描述】:
有两个线程data_collect_thread 和data_process_thread。
data_collect_thread 收集数据并将数据推送到队列中,这比 data_process_thread 从队列中取出数据并处理它的速度快 4 倍。
在这种情况下,由于与将数据推送到队列相比,出队速度较慢,堆会在一段时间后溢出。
我不能在data_collect_thread 等待data_process_thread 处理数据。我需要获取实时数据而不会丢失。
请建议一种算法来避免这个问题?
更多细节:
队列是一个双向链表,所以我需要在堆中分配内存并将其推送到队列中。出队后,内存被释放。
【问题讨论】:
-
呃,开始更多
data_collect_thread以便他们跟上?我认为没有算法可以解决这个问题。显然队列和代码必须是线程安全的,等等。 -
检查
data_collect_thread是否可以有多个实例,以处理输入。 -
您可以运行 4 个
data_process_thread实例,然后旋转它们。只有当你有 5 个核心时才有效。一个采集时间真的是您采集实时数据所需的频率还是可以降低周期? -
您应该在有关数据收集和处理的问题中添加更多详细信息。 (您到底要做什么?)数据收集线程会永久发送数据,还是会在一段时间间隔内收到突发数据,而没有新数据?队列是如何实现的?
-
买一台速度快四倍的电脑
标签: c multithreading synchronization