當LwIP的netconn_accept()
或netconn_recv()
函數被調用,如果我們使用的是RTOS,它會阻塞線程和等待,直到超時連接或永遠取決於LWIP_SO_RCVTIME0
設置。超時時間等於SYS_ARCH_TIMEOUT
。LWIP + RTOS - 如何避免netconn永遠阻塞線程?
SYS_ARCH_TIMEOUT
被定義爲0xffffffff在覈心包含LwIP堆棧的一部分,所以我認爲它不會被改變。
實際上,我希望它檢查是否有連接,如果不是則繼續線程。但是,如果我打電話給netconn_accept()
,它只會阻塞線程並永遠等待(或很長一段時間)...我不想更改SYS_ARCH_TIMEOUT
的定義值,因爲我需要不同的超時時間。 。
這樣做的好方法是什麼?謝謝。
我不知道LWIP的細節,但它有一個非阻塞套接字的概念或「選擇」類功能? –
lwIP中的BSD套接字實現實際上使用了OP可能無法承受的額外空間。 RAM的64kb不是一切的大空間。 –
@ViktorLatypov你怎麼知道我只有64kb RAM?我認識你嗎...? – eepty