首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组播节目丢失数据

组播节目丢失数据
EN

Stack Overflow用户
提问于 2011-04-11 17:52:49
回答 1查看 231关注 0票数 1

我有一个用C语言编写的多线程程序,一个线程从网络接收组播数据并将其存储在队列中,另一个线程不断读取队列并将其写入文件。一切工作正常,即没有数据从组播网络丢失。

线程1:读取多播数据并将其存储到队列中线程2:从队列读取并将其写入文件。

现在我有了另一个来自网络的多播数据源,我需要另一个线程来读取网络数据,然后我只需要添加一个for循环来为多播数据创建另一个线程,然后当两个多播线程来回切换时,我就会丢失来自多播网络的数据!

如果使用两个线程,任何人都知道为什么会有丢失的数据报。谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-04-13 08:35:28

您很可能没有使用任何并发机制,如信号量或互斥。经典的解决方案是监视器。监视器提供一个锁来协调并发访问和条件信号,以允许独立的进程阻塞访问(无忙碌等待)。简单地说,这意味着一次只能有一个线程访问数据。这防止读线程读取写线程尚未完成写的数据。它还允许读取线程读取其他读取线程尚未读取的数据。实现这一点的一种方法是使用读写互斥锁和访问信号量。每个想要访问数据的线程都会减少访问信号量,该线程将被授予访问权限或休眠,直到它得到它。读写互斥锁将阻止读线程读取,直到一些数据被写入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5619576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档