我在尝试在两个线程之间进行 TCP 隧道时遇到了这个问题。
Thread 1
listen at Port
accept
then add the sock after accept to epoll_ctl
while (1)
epoll_wait
read whatever from Port to remote (tunnelling)
Thread 2
connect to Port
if connected
communicate...
我实际观察到的是:虽然线程 2 在连接时被阻塞,但线程 1 没有机会运行 epoll_wait 并将连接信息发送到远程。因此,两个线程都无法取得进展。
一种可能的解决方案是使用父子进程而不是多线程。但是在我切换到那个之前,它仍然可以用多线程来完成吗?我认为这里需要的是某种中断,而不仅仅是轮询。正确的?
谢谢你的洞察力。