我有一个当前使用三个线程的应用程序,全部设置用于实时调度,用于通过udp套接字连接接收数据。我使用三个线程来尝试加速数据管道,即一个轮询数据并从recv缓冲区中提取数据,另一个将数据复制到一个队列中,另一个写入文件。
是否有多个实时线程会导致udp连接出现问题,例如,如果尝试复制数据的线程在尝试从缓冲区中获取数据的线程上发生争用?
答案 0 :(得分:1)
是的,将线程的优先级提高到实时似乎是一个坏主意,请参阅this post了解一些细节。
您是否考虑过相反的做法?拥有相同线程的两个或多个副本,执行读取和复制操作。现在同步它们,以便第一个线程完成读取并开始将数据复制到队列后,第二个线程已经开始读取。将数据从队列保存到文件可能最好在单个线程中完成(除非您有多个磁盘等)。