我正在编写一个音频流媒体(客户端-服务器)作为我的项目(C/C++),我决定为这个项目制作一个多线程 UDP 服务器。
这背后的逻辑是每个客户端都将在他自己的线程中处理。我遇到的问题是线程相互干扰。
我的服务器做的第一件事是创建一种线程池;它创建了 5 个线程,所有这些线程都被一个recvfrom()
函数自动阻止,尽管在大多数情况下,当我将另一台设备连接到服务器时,多个线程正在响应,然后导致服务器完全被阻止,并且不再操作。
调试它也很困难,所以我写在这里是为了获得一些关于多线程 UDP 服务器通常如何实现的建议。
我应该在部分代码中使用互斥锁还是信号量?如果有,在哪里?
任何想法都会非常有帮助。