-1
我在尝试执行两个线程之间的TCP隧道时遇到此问题。epoll问题:隧道和多线程
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并发送连接信息到远程。因此这两个线程都无法取得进展。
一种可能的解决方案是使用父子进程而不是多线程。但在切换之前,是否仍然可以通过多线程完成?我认为这里需要的不仅仅是轮询,而是某种中断。对?
谢谢你的洞察力。
你的代码和伪代码一样好,并且线程2肯定会运行,而1被卡在accept中。也许发布实际的代码? – bmargulies