我尝试在两个线程之间进行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并将连接信息发送到远程。因此两个线程都无法取得进展。
一种可能的解决方案是使用父子进程而不是多线程。但在我切换到那之前,还能用多线程完成吗?我认为这里需要的是某种中断而不仅仅是轮询。对?
感谢您的见解。
答案 0 :(得分:0)
您可以将服务器端套接字描述符添加到epoll_ctl中。但我很好奇,如果thread2在连接上被阻止,你需要向服务器发送什么信息?谢谢你的提示。