-1

我在尝试在两个线程之间进行 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 并将连接信息发送到远程。因此,两个线程都无法取得进展。

一种可能的解决方案是使用父子进程而不是多线程。但是在我切换到那个之前,它仍然可以用多线程来完成吗?我认为这里需要的是某种中断,而不仅仅是轮询。正确的?

谢谢你的洞察力。

4

1 回答 1

0

您可以将服务器端套接字描述符添加到 epoll_ctl。但是我很好奇如果thread2在连接上被阻塞,你需要向服务器发送什么信息?谢谢你的提示。

于 2013-01-15T01:28:09.713 回答