跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 本地 UDP socket sendto 阻塞
未分類
7 2 月 2021

本地 UDP socket sendto 阻塞

本地 UDP socket sendto 阻塞

資深大佬 : SilverLink 3

小弟最近需要处理一个 bug,没有思路,想咨询下大家

问题可以抽象为:同一 Linux 主机的两个进程,使用 AF LOCAL 的 UDP socket 互相发送消息,但是发送快到一定程度几 s 后,两个进程就都会卡住,重启 A 后工作正常。

根据日志和定位,情况是进程 A 执行到 sendto 后卡住,B 如果准备向 A 发消息,就也会在 sendto 函数里出不来,然后串口就安静了。

看起来很像是两个进程的缓冲区都满了,同时等待对方接收,形成死锁。但是我记得 UDP 没有发缓冲区,如果接收方的收缓冲区满了,发送方应该也不会管,而是任接收方丢弃,为什么会陷在函数里出不来呢?

有没有一些查找问题根源的思路

大佬有話說 (4)

  • 資深大佬 : XiaoxiaoPu

    AF_UNIX ( AF_LOCAL ) SOCK_DGRAM 并不是 UDP,它是可靠的。

  • 資深大佬 : undef404

    udp send 有缓冲的.
    可以改成 non_block 模式, 如果 buffer 满了就先别发.

  • 資深大佬 : back0893

    emm
    udp 不是缓存满了就自动丢弃么

  • 資深大佬 : Meltdown

    到底是 UDP 还是 UNIX 域套接字

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具